bzoj1477: 青蛙的約會(exgcd)
阿新 • • 發佈:2018-02-07
size tar geo oss math using 問題 possible div
1477: 青蛙的約會
題目:傳送門
題解:
一眼題,追及問題exgcd
青蛙Rose在b點,一次跳a米。。。
青蛙hanks_o在d點,一次跳c米
那麽YY:ax+b=cx+d (mod p)
化簡:(a-c)x-p*y=d-b
水代碼:
1 #include<cstdio> 2 #include<cstring> 3 #include<cstdlib> 4 #include<cmath> 5 #include<algorithm> 6 using namespacestd; 7 typedef long long LL; 8 LL exgcd(LL a,LL b,LL &x,LL &y) 9 { 10 if(a==0) 11 { 12 x=0;y=1; 13 return b; 14 } 15 else 16 { 17 LL tx,ty; 18 LL d=exgcd(b%a,a,tx,ty); 19 x=ty-(b/a)*tx; 20 y=tx; 21 returnd; 22 } 23 } 24 int main() 25 { 26 LL A,B,C,D,L; 27 scanf("%lld%lld%lld%lld%lld",&C,&D,&A,&B,&L); 28 LL a=A-B,b=-L,sum=(D-C),x,y; 29 LL d=exgcd(a,b,x,y); 30 if(sum%d!=0) 31 { 32 printf("Impossible\n"); 33 return 0; 34 }35 x=((x*(sum/d))%(b/d)+(b/d))%(b/d); 36 printf("%lld\n",x); 37 return 0; 38 }
bzoj1477: 青蛙的約會(exgcd)