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为根据定义写出的函数
<<中国剩余定理>>求一次同余式组
中国剩余定理定义 根据定义可以写出代码
设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; }
相关文章推荐
- 1167: How Many Eggs Do I Have? 秦九韶定理
- How many fix bug method do you have?
- HDU 4723 How Long Do You Have to Draw
- How to solve the problem witch is the system send many emails when cron have something wrong
- HDU 4723 How Long Do You Have to Draw
- hdoj-4723-How Long Do You Have to Draw
- PowerTip of the Day-How Much RAM Do You Have?
- HDU 4723 How Long Do You Have to Draw 解题报告
- hdu-4724-How Long Do You Have to Draw-贪心
- how many does the factorial of n(in binary data ) have zero?
- How many things do you really about .net framwork?
- [转载] How Many Partitions Does An RDD Have
- mahout 创建向量问题There are too many documents that do not have a term vector
- How do I close a single buffer (out of many) in Vim?
- HDU4723-How Long Do You Have to Draw
- Bubble Gum, Bubble Gum, in the dish, how many pieces do you wish?”
- How many papers have been implemented in OpenCV?
- How to create MFC applications that do not have a menu bar in Visual C++(MFC单文档和多文档程序中去掉菜单栏)(转)
- Do you know how many stuff inside your Google Account?
- When I use the Report Viewer ,I have the error,how should i do?