POJ2115 C Looooops

来源:互联网 发布:网络qos定义 编辑:程序博客网 时间:2024/05/14 03:44

题目大意&&思路:B-A=C*x-2^k*y  扩展欧几里德

好久没一血了。感懂~~~呜呜。

AC program:#include<iostream>#include<stdio.h>#include<string.h>#include<math.h>#include<algorithm>using namespace std; __int64 exgcd(__int64  a,__int64  b,__int64  &x, __int64  &y ){   __int64  t,d;   if(b==0)   {     x=1;     y=0;     return a;           }   d=exgcd(b,a%b,x,y);   t=x;   x=y;   y=t-(a/b)*y;   return d;           } int main(){__int64  a,b,c,k,MM,ar,br;    while(cin>>a>>b>>c>>k){   if(!a&&!b&&!c&&!k)break;    __int64 tmp=(__int64)pow(2.0,k*1.0);    MM=exgcd(c,tmp,ar,br);   if((b-a)%MM)       cout<<"FOREVER"<<endl;   else      {         __int64  s=tmp/MM;         ar=ar*(b-a)/MM;         cout<<(ar%s+s)%s<<endl;                  }                }//system("pause"); return 0;} 



 

原创粉丝点击