POJ 1061 青蛙的约会 | 同余方程和exGcd
2017-11-26 14:26
253 查看
题解:
要求s+px=t+qx (mod L)
移项 (p-q)x=t-s (mod L)
等价于 (p-q)x+Ly=t-s
即ax+by=c的方程最小非负根
exGcd后乘个C
1 #include<cstdio> 2 typedef long long ll; 3 using namespace std; 4 ll s,t,p,q,L; 5 ll gcd (ll x,ll y) 6 { 7 return y==0?x:gcd(y,x%y); 8 } 9 ll exGcd(ll a,ll b,ll &x,ll &y) 10 { 11 if (b==0) return x=1,y=0,a; 12 ll r=exGcd(b,a%b,y,x); 13 y-=(a/b)*x; 14 return r; 15 } 16 int main() 17 { 18 scanf("%lld%lld%lld%lld%lld",&s,&t,&p,&q,&L); 19 ll a=(p-q+L)%L,b=L,c=(t-s+L)%L,x,y,G=gcd(a,b); 20 if (c%G!=0) 21 { 22 puts("Impossible"); 23 return 0; 24 } 25 a/=G,b/=G,c/=G; 26 exGcd(a,b,x,y); 27 x=(x%b+b)%b; 28 x=x*c%b; 29 printf("%lld\n",x); 30 return 0; 31 }
相关文章推荐
- 【poj1061】青蛙的约会 exgcd解同余方程
- poj1061青蛙的约会 同余方程
- POJ 1061 青蛙绕地球约会-数论-(解一元一次同余方程+扩展欧几里得算法)
- 【POJ - 1061 】青蛙的约会 【exgcd 求解不定方程】
- POJ 1061 青蛙的约会 同余方程
- poj 1061 青蛙的约会 (解同余方程)
- poj1061 青蛙的约会(扩展欧几里得算法求解同余方程)
- POJ1061 青蛙的约会,exgcd
- poj1061 青蛙的约会(扩展欧几里得算法求解同余方程)
- POJ 1061 青蛙的约会【exgcd】
- 青蛙的约会(POJ 1061 同余方程)
- POJ1061_青蛙的约会(数论/同余方程)
- POJ 1061 青蛙的约会 exgcd
- poj1061青蛙的约会(exgcd拓展欧几里得)
- 同余方程 ax≡1(mod b) & POJ 1061 青蛙的约会
- 【poj1061】青蛙的约会(数论,exgcd)
- 青蛙的约会(poj1061+欧几里德+同余方程)
- POJ 1061 青蛙约会(一次同余方程)
- 【POJ 1061】青蛙的约会(EXGCD)
- poj 1061 青蛙的约会