您的位置:首页 > 运维架构

POJ 2115 C Looooops 扩展gcd

2016-08-01 14:25 363 查看
很裸的扩展gcd 3月份做过一次 不过那时候稀里糊涂不求甚解 最近又好好看了下扩展gcd 这就一sb题

ACcode:

#include <iostream>
#include <cstdio>
#define ll long long
using namespace std;
ll ex_gcd(ll a,ll b,ll &x,ll &y){
if(a==0&&b==0)return -1;
if(b==0){x=1,y=0;return a;}
ll d=ex_gcd(b,a%b,y,x);
y-=a/b*x;
return d;
}
int main(){
ll a,b,c,k,A,B,C,D,X,Y;
while(scanf("%I64d%I64d%I64d%I64d",&a,&b,&c,&k)&&(a+b+c+k)){
A=c;
B=1ll<<k;
C=b-a;
D=ex_gcd(A,B,X,Y);
if(C%D!=0)puts("FOREVER");
else {
X=X*(C/D);
X=(X%(B/D)+B/D)%(B/D);
cout<<X<<'\12';
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: