码迷,mamicode.com
首页 > 其他好文 > 详细

中国剩余定理

时间:2016-05-27 19:59:25      阅读:205      评论:0      收藏:0      [点我收藏+]

标签:

求解x ≡ b[](mod w[])中的x值

 1 #include <stdio.h>
 2 int ext_euclid(int a,int b,int &x,int &y)  //求gcd(a,b)=ax+by
 3 {
 4     int t,d;
 5     if (b==0) {x=1;y=0;return a;}
 6     d=ext_euclid(b,a %b,x,y);
 7     t=x;
 8     x=y;
 9     y=t-a/b*y;
10     return d;
11 }
12 
13 
14 int China(int B[],int W[],int k)
15 {
16     int i;
17     int d,x,y,a=0,m,n=1;
18     for (i=0;i<k;i++)
19         n*=W[i];
20     for (i=0;i<k;i++)
21     {
22         m=n/W[i];
23         d=ext_euclid(W[i],m,x,y);
24         a=(a+y*m*B[i])%n;
25     }
26     if (a>0) return a;
27     else return(a+n);
28 }
29 int main(){
30     int len,B[100],W[100];
31     scanf("%d",&len);
32     for(int i = 0; i < len; i++)
33         scanf("%d%d",&B[i],&W[i]);
34     int ans = China(B,W,len);
35     printf("%d\n",ans);
36     return 0;
37 }

 

中国剩余定理

标签:

原文地址:http://www.cnblogs.com/yfs123456/p/5535613.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!