您的位置:首页 > 其它

[数论]中国剩余定理 CRT

2017-03-23 22:18 337 查看

代码大法好。

class Crt{
private:
template <class T>
inline T exgcd( T a, T b, T &x, T &y )  {
if( !b )  {
x = 1, y = 0;
return a;
}
T gcd = exgcd( b, a % b, y, x );
y -= a / b * x;
return gcd;
}
public:
template <class T>
inline T China( T * m, T * a, T n )  {
int x, y, rt = 0, t, N = 1, i;
for( i = 1; i <= n; ++i )  N *= m[i];
for( i = 1; i <= n; ++i )  {
t = N / m[i];
exgcd( m[i], t, x, y );
rt = ( rt + y * t * a[i] ) % N;
}
return rt > 0 ? rt : rt + N;
}
} M;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: