[2016-04-20][POJ][1061][青蛙的约会]

[2016-04-20][POJ][1061][青蛙的约会]

  • 时间:2016-04-20 13:59:38 星期三

  • 题目编号:[2016-04-20][POJ][1061][青蛙的约会]

  • 题目大意:两支青蛙,在一个圈上往同一个方向跳,问能否相遇

  • 分析:

    • 设时间为t
    • x+mt=y+nt(modl),
    • 解得到同余方程的最小非负整数解即可
  1. #include<cstdio>
  2. #include<algorithm>
  3. using namespace std;
  4. long long extend_gcd(long long a,long long b,long long &x,long long &y){
  5. if(b == 0){x=1;y=0;return a;}
  6. long long d = extend_gcd(b,a%b,y,x);
  7. y -= a/b*x;
  8. return d;
  9. }
  10. int main(){
  11. long long x,y,n,m,l;
  12. scanf("%I64d%I64d%I64d%I64d%I64d",&x,&y,&m,&n,&l);
  13. long long xx,yy,a,b;
  14. a = n - m;b = x - y;
  15. long long d = extend_gcd(a,l,xx,yy);
  16. if(b % d){ puts("Impossible");return 0;}
  17. xx = xx * (b / d);
  18. long long r = l / d;
  19. xx = (xx%r + r)%r;
  20. printf("%I64d\n",xx);
  21. return 0;
  22. }


来自为知笔记(Wiz)


posted on 2016-04-20 14:03  红洋  阅读(120)  评论(0)    收藏  举报

导航