中国剩余定理:
求解此类同余方程组最小非负整数解的算法实现:
ll China()
{
ll M1,ans=0;
M=1;
for(int i=1;i<=3;i++) M*=m[i];
for(int i=1;i<=3;i++){
M1=M/m[i];
t=extended_gcd(M1,m[i],x,y);
ans=(ans+M1*x*a[i])%M;
}
if(ans<0) ans+=M;
return ans;
}
poj 1006 Biorhythms
题目链接:http://poj.org/problem?id=1006
解题思路:仔细读题有求解同余方程组 X mod 23 = p (1) 大于d的最小整数解;
X mod 28 = e (2)
X mod 33 = i (3)
因为23,28,33两两互素,满足中国剩余定理的条件,调用函数即可,代码如下:
#include
#include
#include
#include
hdu 1788 Chinese remainder theorem again
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1788
解题思路: N%Mi=Mi-a,即N+a=0(mod Mi)根据中国剩余定理,最小非负整数解一定为0,(或直接根据模结果为0得到)问题所求为Mi的最小公倍数-a
附代码:
#include
#include
#include
#include