中国剩余定理解同余方程组
ll exgcd(ll a,ll b,ll &x,ll &y) { if(!b) { x = (ll)1,y = (ll)0; return a; } ll r = exgcd(b,a%b,x,y); ll t = x; x = y; y = t - a/b*y; return r; } //n个方程: x = a[i](mod m[i]) (0<=i<n) ll china(int n,int *a,int *m) { ll M = 1,d,y,x = 0; int i; for(i=0;i<n;i++) M *= m[i]; for(i=0;i<n;i++) { ll w = M/m[i]; d = exgcd(m[i],w,x,y) x = (x + y*w*a[i])%M; } return (x+M)%M; }
作者:whatbeg
出处1:http://whatbeg.com/
出处2:http://www.cnblogs.com/whatbeg/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
更多精彩文章抢先看?详见我的独立博客: whatbeg.com