当我真正理解了扩展欧几里得定理
2011-09-02 22:29
211 查看
首先、扩展欧几里得定理:对于两个不全为0的整数a、b,必存在一组解x,y,使得ax+by==gcd(a,b);
实现如下:
View Code
实现如下:
View Code
#include<iostream> #include<string> usingnamespace std; __int64 b,b1,c,c1,d,x,y,A,B,C; __int64 gcd(__int64 a,__int64 b) { __int64 d,t; if(!b) { x=1; y=0; return a; } d=gcd(b,a%b); t=x; x=y; y=t-(a/b)*y; return d; } int main() { int k,i,flag; freopen("in.txt","r",stdin); while(scanf("%d",&k)!=EOF) { flag=0; scanf("%I64d%I64d",&b,&c); if(k==1) { printf("%I64d\n",b+c); continue; } for(i=1;i<k;i++) { scanf("%I64d%I64d",&b1,&c1); if(flag) continue; A=b; B=b1; C=c1-c; d=gcd(A,B); if(C%d!=0) { flag=1; continue; } x=x*C/d; //取得x的最小值 x=x-(x*d/B)*(B/d); if(x<0) x+=B/d; c=x*b+c; b=(b*b1)/d; //按前面的分析头两合并式子 } if(!flag) { printf("%I64d\n",c); } else { printf("-1\n"); } } return0; }
相关文章推荐
- 当我真正理解了扩展欧几里得定理
- 当我真正理解了扩展欧几里得定理
- 真正理解了扩展欧几里得定理
- 当我真正理解了扩展欧几里得定理
- 扩展欧几里得定理小理解
- 扩展欧几里得定理
- 扩展欧几里得、逆元、线性同余方程组、中国剩余定理总结
- 关于欧几里得定理和拓展欧几里得定理的理解 续
- 扩展的欧几里得&中国剩余定理
- poj 1601 青蛙的约会 扩展欧几里得定理应用
- 扩展欧几里得定理
- 基于扩展欧几里得的证明的个人理解
- 5.扩展欧几里得&&中国剩余定理
- 扩展欧几里得定理
- 扩展欧几里得定理 exgcd
- 扩展欧几里得定理
- BZOJ_P1951&Codevs_P1830 [SDOI2010]古代猪文(Lucas定理+扩展欧几里得+中国剩余定理)
- poj2891——Strange Way to Express Integers(扩展欧几里得解中国剩余定理)
- The equation 之深入理解扩展欧几里得
- Strange Way to Express Integers(扩展欧几里得+乘法逆元+中国剩余定理求解非互质的模线性方程组)