poj 1061 exgcd解同余方程

来源:互联网 发布:跨平台数据集成 编辑:程序博客网 时间:2024/05/11 23:09

点击打开链接http://poj.org/problem?id=1061

#include <iostream>#include <algorithm>using namespace std;__int64 t,p,d;void exgcd(__int64 a,__int64 b){if(b==0){t=1;p=0;d=a;//gcd}else{exgcd(b,a%b);__int64 tmp;tmp=t;t=p;p=tmp-(a/b)*p;}}int main(){__int64 x,y,m,n,l;    // t秒后能相遇  (x+mt)modl = (y+nt)modl cin>>x>>y>>m>>n>>l; //  即x+mt ≡y+nt (mod l) //  pl=x+mt-y-nt ->  (n-m)t+pl=x-y; //可以先求出 (n-m)t1+lp1=gcd(n-m,l) exgcd(n-m,l);//如果 d|(x-y) 则 t=t1*((x-y)/d) if((x-y)%d)//t=(t%(l/d)+l/d)%(l/d);  (没看懂) {cout<<"Impossible"<<endl;}else{__int64 k=(x-y)/d;t=t*k;t=(t%(l/d)+l/d)%(l/d); // 不懂... cout<<t<<endl;}return 0;}


0 0
原创粉丝点击