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;}

原创粉丝点击