青蛙的约会

青蛙的约会

# 题意

两个青蛙位于一条纬度线上,纬度线首尾相接,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 }
复制代码

 

 

本文作者:Hyx'

本文链接:https://www.cnblogs.com/hhyx/p/12715687.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   Hyx'  阅读(157)  评论(0编辑  收藏  举报
评论
收藏
关注
推荐
深色
回顶
收起
点击右上角即可分享
微信分享提示