中国剩余定理说明:假设整数
m
1,
m
2, ... ,
m
n两两互质,则对任意的整数:
a
1,
a
2, ... ,
a
n,方程组
有解,并且通解可以用如下方式构造得到:
设
是整数
m
1,
m
2, ... ,
m
n的乘积,并设
是除了
m
i以外的
n- 1个整数的乘积。
设
为
模
的数论倒数(
为
模
意义下的逆元)
方程组
的通解形式为
在模
的意义下,方程组
只有一个解:
证明 :
从假设可知,对任何
,由于
,所以
这说明存在整数
使得
这样的
叫做
模
的数论倒数。考察乘积
可知:
所以
满足:
这说明
就是方程组
的一个解。
另外,假设
和
都是方程组
的解,那么:
而
两两互质,这说明
整除
. 所以方程组
的任何两个解之间必然相差
的整数倍。而另一方面,
是一个解,同时所有形式为:
的整数也是方程组
的解。所以方程组所有的解的集合就是:
(从公式逆推)
poj1006生理周期:
#include<iostream> #include<cstdio> #include<cstring> using namespace std; int a[4],st,M,cnt; int main() { M=23*28*33; while(scanf("%d",&a[1])!=-1) { cnt++; scanf("%d%d%d",&a[2],&a[3],&st); if(a[1]==-1)break; int ans=(5544*a[1]+14421*a[2]+1288*a[3]-st+M)%M; if(!ans)ans=M; printf("Case %d: the next triple peak occurs in %d days.\n",cnt,ans); } return 0; }