您的位置:首页 > 其它

joj 1167 How Many Eggs Do I Have?

2010-09-08 20:39 351 查看
http://acm.jlu.edu.cn/joj/showproblem.php?pid=1167

<<中国剩余定理>>求一次同余式组

中国剩余定理定义 根据定义可以写出代码

设m1,m2,...mn是两两互素的正整数,
则x≡bi mod mi(i=1,2,...n)在模m1m2m3...mn下有唯一解。
这M=m1m2....mn,Mj=M/mj,且Mjyj≡1 mod mj(j=1,2,...n),
则x=b1M1y1+b2M2y2+...+bnMnyn mod m1m2m3...mn即是符合条件的解。


注:ch_mod为根据定义写出的函数

#include<stdio.h>
int ch_mod(int b[],int m[],int n,int sum){
int i;
int count=0;
int y[5],M[5];
for(i=0;i<n;i++){
y[i]=1;
M[i]=sum/m[i];
while((M[i]*y[i])%m[i]!=1) y[i]++;
count+=b[i]*M[i]*y[i];
}
return count%sum;
}
int main(){
int b[5],m[5],n,i,sum;
while(scanf("%d",&n)!=EOF,n){
sum=1;
for(i=0;i<n;i++){
scanf("%d%d",&m[i],&b[i]);
sum*=m[i];
}
printf("%d/n",ch_mod(b,m,n,sum));
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: