[2016-04-20][POJ][1061][青蛙的约会]
[2016-04-20][POJ][1061][青蛙的约会]
时间:2016-04-20 13:59:38 星期三
题目编号:[2016-04-20][POJ][1061][青蛙的约会]
题目大意:两支青蛙,在一个圈上往同一个方向跳,问能否相遇
分析:
- 设时间为t
- 有 ,
- 解得到同余方程的最小非负整数解即可
#include<cstdio>
#include<algorithm>
using namespace std;
long long extend_gcd(long long a,long long b,long long &x,long long &y){
if(b == 0){x=1;y=0;return a;}
long long d = extend_gcd(b,a%b,y,x);
y -= a/b*x;
return d;
}
int main(){
long long x,y,n,m,l;
scanf("%I64d%I64d%I64d%I64d%I64d",&x,&y,&m,&n,&l);
long long xx,yy,a,b;
a = n - m;b = x - y;
long long d = extend_gcd(a,l,xx,yy);
if(b % d){ puts("Impossible");return 0;}
xx = xx * (b / d);
long long r = l / d;
xx = (xx%r + r)%r;
printf("%I64d\n",xx);
return 0;
}