zoukankan      html  css  js  c++  java
  • 青蛙的约会

    青蛙的约会

    # 题意

    两个青蛙位于一条纬度线上,纬度线首尾相接,a开始位于x,b开始位于y,纬度线长L,a以每秒n速度,b以每秒m速度向同一方向移动,求最少的时间两青蛙相遇

    # 题解

    设 x'为时间,则满足x' · (a-b) ≡ x-y (mod L) 即方程,扩展欧求出特解后求最小的x解即可

     1 #include <bits/stdc++.h>
     2 #define ll long long
     3 using namespace std;
     4 ll exgcd(ll a,ll b,ll &x,ll &y){
     5     if(!b){
     6         x=1,y=0;
     7         return a;
     8     }
     9     ll d=exgcd(b,a%b,y,x);
    10     y-=(a/b)*x;
    11     return d;
    12 }
    13 int main(){
    14     ll x,y,m,n,L;
    15     cin>>x>>y>>m>>n>>L;
    16     ll xx,yy;
    17     ll d=exgcd(m-n,L,xx,yy);
    18     if((x-y)%d) puts("Impossible");
    19     else {
    20         xx*=(y-x)/d;
    21         ll t=abs(L/d);
    22         cout << (xx%t + t)%t << endl;
    23     }
    24 }

     

  • 相关阅读:
    java--保留重复排序
    java--TreeSet比较器排序
    java--去重练习
    java--HashSet
    java--集合可变参数
    spring MVC入门
    java IO详解
    spring入门
    redis详解
    maven教程
  • 原文地址:https://www.cnblogs.com/hhyx/p/12715687.html
Copyright © 2011-2022 走看看