poj 1061 扩展欧几里得
来源:互联网 发布:windows 10 版本 1607 编辑:程序博客网 时间:2024/06/06 00:31
没弄明白什么扩展欧几里得,只是用来做模板的#include<cstdio>#include<iostream>using namespace std;long long k,t;long long extended_gcd(long long a,long long b){ if (b==0) { k=1; t=0; return a; } else { long long r; r=extended_gcd(b,a%b); long long temp; temp=k; k=t; t=temp-(a/b)*t; return r; }}int main(){ long long x,y,m,n,a,b,l; while(scanf("%lld %lld %lld %lld %lld",&x,&y,&m,&n,&l)!=EOF)//x,y为两点各自起始的位置,m,n为各自的周期,l,为整个的长度 { a=m-n;b=y-x; if (a<0) {a=-a;b=-b;} long long d=extended_gcd(a,l); if (b%d!=0) printf("Impossible\n"); else { k=k*b/d; t=t*b/d; l=l/d; if (k>=0) k=k%l; else k=k%l+l; printf("%lld\n",k); } } return 0;}