http://blog.csdn.net/non_cease/article/details/7364092
这篇博客写的炒!鸡!好!,喜翻~
解题思路看这篇博客
http://blog.csdn.net/lyy289065406/article/details/6648546
好了,没我的什么事了~
#include <stdio.h>
#include <math.h>
#define ll long long
ll x,y;
ll int Extended_Euclid(ll a,ll b)
{
if(b==0)
{
x=1;
y=0;
return a;
}
ll m=Extended_Euclid(b,a%b);
ll temp=x;
x=y;
y=temp-a/b*y;
return m;
}
int main()
{
ll A,B,C,K;
while(~scanf("%lld%lld%lld%lld",&A,&B,&C,&K)&&!(A==0&&B==0&&C==0&&K==0))
{
ll a=C;
ll b=(ll)1<<K;
ll n=B-A;
ll d=Extended_Euclid(a,b);
if(n%d)
{
printf("FOREVER\n");
continue;
}
ll t=b/d;
ll x0=((x*n/d)%t+t)%t;
printf("%lld\n",x0);
}
}