扩展欧几里得解不定方程
LL gcd(LL a,LL b){ if(b==0) return a; else return gcd(b,a%b); } LL ex_gcd(LL a,LL b,LL &x,LL &y){ if(b==0){ x=1;y=0; return a; } LL r=ex_gcd(b,a%b,x,y); LL t=x; x=y; y=t-a/b*y; return r; } //求解ax+by=c的解x,y x,y需要提前定义 bool linear_equation(LL a,LL b,LL c,LL &x,LL &y) { LL d=ex_gcd(a,b,x,y); if(c%d!=0) //即不整除 return false; LL k=c/d; x*=k; y*=k; //求得的只是其中一组解,另外的解是:x+b/gcd(a,b)*i y-a/gcd(a,b)*i return true; }
作者:weeping
出处:www.cnblogs.com/weeping/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。