2 条题解
-
0
#include<bits/stdc++.h> using namespace std; typedef long long LL; void exgcd(LL a,LL b,LL &d,LL &x,LL &y) { if(b==0) { d=a;x=1;y=0;} else { exgcd(b,a%b,d,y,x); y-=(a/b)*x; } } int main() { LL a,b,c,k; while(scanf("%lld%lld%lld%lld",&a,&b,&c,&k)!=EOF) { if(a==0&&b==0&&c==0&&k==0) break; if(a==b) {printf("0\n");continue;} k=((LL)1<<k); LL A,B,d,x,y,K; A=c;B=k;K=b-a; exgcd(A,B,d,x,y); if(K % d!=0) printf("FOREVER\n"); else { LL db=abs(B/d); x=x*K/d; x=((x%db)+db)%db; printf("%lld\n",x); } } return 0; } -
0
#include<bits/stdc++.h> using namespace std; typedef long long LL; void exgcd(LL a,LL b,LL &d,LL &x,LL &y) { if(b==0) { d=a;x=1;y=0;} else { exgcd(b,a%b,d,y,x); y-=(a/b)*x; } } int main() { LL a,b,c,k; while(scanf("%lld%lld%lld%lld",&a,&b,&c,&k)!=EOF) { if(a==0&&b==0&&c==0&&k==0) break; if(a==b) {printf("0\n");continue;} k=((LL)1<<k); LL A,B,d,x,y,K; A=c;B=k;K=b-a; exgcd(A,B,d,x,y); if(K % d!=0) printf("FOREVER\n"); else { LL db=abs(B/d); x=x*K/d; x=((x%db)+db)%db; printf("%lld\n",x); } } return 0; }
- 1
信息
- ID
- 1770
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- 7
- 标签
- (无)
- 递交数
- 97
- 已通过
- 22
- 上传者