zoukankan      html  css  js  c++  java
  • POJ 1061 青蛙的约会【扩欧】

    题意:

    两只青蛙在地球同一纬度不同位置x,y向同一方向跳,每只青蛙跳的长度不同m,n,纬线总长度l,问两只青蛙是否能相遇,跳几次才相遇。

    分析:

    可知,问题可转化为求(mn)a(yx)(modl)的最小值解a

    代码:

    #include<iostream>
    using namespace std;
    typedef long long ll;
    ll extgcd(ll a, ll b, ll& x,ll &y)
    {
        ll d = a;
        if(b!=0){
            d = extgcd(b, a%b, y, x);
            y -= (a/b)*x;
        }else {
            x = 1;
            y = 0;
        }
        return d;
    }
    ll cal(int a, int b, int c)
    {
        ll x, y;
        ll gcd = extgcd(a, b, x, y);
        if(c % gcd != 0) return -1;
        x *= c/gcd;
        b /= gcd;
        if(b < 0) b = -b;
        ll ans = x % b;
        if(ans <= 0) ans += b;
        return ans;
    }
    int main (void)
    {
        long long x, y , m , n , l;
        cin>>x>>y>>m>>n>>l;
        ll ans = cal(m - n, l , y-x);
        if(ans == -1) cout<<"Impossible"<<endl;
        else cout<<ans<<endl;
        return 0;
    }
    
  • 相关阅读:
    1.17 Python基础知识
    反射
    面向对象——类
    异常处理
    面向对象——静态方法、类方法、属性法法,其他特殊方法
    面向对象——继承
    question
    configparser模块
    hashlib模块
    shelve模块
  • 原文地址:https://www.cnblogs.com/Tuesdayzz/p/5758827.html
Copyright © 2011-2022 走看看