poj 1061-青蛙的约会-拓展gcd
2017-04-03 00:36
357 查看
赤裸裸的 拓展欧几里得的应用。
注意 无法完成的条件的限制
和为什么是 M-n不是 n-m;
x+m*t-y-n*t==l*p;//因为m小,所以m应该在前面的。
x-y==(n-m)*t+l*p;
欧几里得就带入 n-m 和 l 这俩参数
然后 就是模板的套路了,。
纯纯的模板
注意 无法完成的条件的限制
和为什么是 M-n不是 n-m;
x+m*t-y-n*t==l*p;//因为m小,所以m应该在前面的。
x-y==(n-m)*t+l*p;
欧几里得就带入 n-m 和 l 这俩参数
然后 就是模板的套路了,。
纯纯的模板
#include <iostream> #include <cstdio> #include <cstdlib> #include <cstring> #define LL long long using namespace std; //x*a+y*b==gcd(a,b); //(m-n)x+lb==X-Y; //和 变量名字一样 // 拓展欧几里德。 long long exgcd(LL a,LL b,LL &x,LL &y) { if(b==0) { x=1; y=0; //如果b为0,那么gcd a就是a 啊; return a; } LL r=exgcd(b,a%b,x,y); LL t=x; x=y; y=t-a/b*y; return r; } int main() { LL n,m,x,y,l; while(~scanf("%lld%lld%lld%lld%lld",&x,&y,&m,&n,&l)) { LL ar,al; long long e=exgcd(n-m,l,ar,al);//为啥非得这样 if((x-y)%e||m==n) { printf("Impossible\n"); } else { // n*t+y+l*p=m*t+x; // LL mod=l/e; LL ans=(ar%mod+mod)%mod; printf("%lld\n",ans); } } return 0; }
相关文章推荐
- poj 1061 青蛙的约会(gcd拓展,解不定方程)
- POJ1061 青蛙的约会 拓展欧几里得(GCD)
- POJ - 1061 青蛙的约会(拓展GCD
- POJ - 1061 青蛙的约会(拓展GCD
- POJ - 1061 青蛙的约会(拓展GCD
- POJ - 1061 青蛙的约会(拓展GCD
- POJ - 1061 青蛙的约会(拓展GCD
- POJ - 1061 青蛙的约会(拓展GCD
- POJ - 1061 青蛙的约会(拓展GCD
- POJ - 1061 青蛙的约会(拓展GCD
- POJ - 1061 青蛙的约会(拓展GCD
- POJ - 1061 青蛙的约会(拓展GCD
- POJ - 1061 青蛙的约会(拓展GCD
- POJ - 1061 青蛙的约会(拓展GCD
- POJ - 1061 青蛙的约会(拓展GCD
- poj1061 青蛙的约会 数论之拓展欧几里德(连青蛙都约会了 我们还在敲代码。。)
- poj 1061 青蛙的约会 拓展欧几里得
- poj 1061 青蛙的约会 扩展gcd
- poj 青蛙的约会 1061 (拓展欧几里得 模板)
- poj 1061 青蛙的约会(拓展欧几里德)