1. 程式人生 > >bzoj1477: 青蛙的約會(exgcd)

bzoj1477: 青蛙的約會(exgcd)

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 namespace
std; 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 return
d; 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)