日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

POJ1061:青蛙的约会——题解

發(fā)布時(shí)間:2025/3/8 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 POJ1061:青蛙的约会——题解 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

http://poj.org/problem?id=1061

Description

兩只青蛙在網(wǎng)上相識(shí)了,它們聊得很開心,于是覺得很有必要見一面。它們很高興地發(fā)現(xiàn)它們住在同一條緯度線上,于是它們約定各自朝西跳,直到碰面為止。可是它們出發(fā)之前忘記了一件很重要的事情,既沒有問清楚對方的特征,也沒有約定見面的具體位置。不過青蛙們都是很樂觀的,它們覺得只要一直朝著某個(gè)方向跳下去,總能碰到對方的。但是除非這兩只青蛙在同一時(shí)間跳到同一點(diǎn)上,不然是永遠(yuǎn)都不可能碰面的。為了幫助這兩只樂觀的青蛙,你被要求寫一個(gè)程序來判斷這兩只青蛙是否能夠碰面,會(huì)在什么時(shí)候碰面。
我們把這兩只青蛙分別叫做青蛙A和青蛙B,并且規(guī)定緯度線上東經(jīng)0度處為原點(diǎn),由東往西為正方向,單位長度1米,這樣我們就得到了一條首尾相接的數(shù)軸。設(shè)青蛙A的出發(fā)點(diǎn)坐標(biāo)是x,青蛙B的出發(fā)點(diǎn)坐標(biāo)是y。青蛙A一次能跳m米,青蛙B一次能跳n米,兩只青蛙跳一次所花費(fèi)的時(shí)間相同。緯度線總長L米。現(xiàn)在要你求出它們跳了幾次以后才會(huì)碰面。

Input

輸入只包括一行5個(gè)整數(shù)s,t,p,q,L,其中s≠t < 2000000000,0 < p、q < 2000000000,0 < L < 2100000000。 (變量名和原題不同請注意)

Output

輸出碰面所需要的跳躍次數(shù),如果永遠(yuǎn)不可能碰面則輸出一行"Impossible"

Sample Input

1 2 3 4 5

Sample Output

4

設(shè)x為最終結(jié)果,則我們能列出式子:

(p - q)x = t - s (mod L)

顯然該式可以轉(zhuǎn)化為:

(p - q)x + Ly = t - s

再變換一下變成:
ax + by = c

變成了熟悉的exgcd問題,正常求解即可。

#include<cstdio> #include<cctype> #include<iostream> using namespace std; typedef long long ll; ll gcd(ll a,ll b) {return b?gcd(b,a%b):a; } void exgcd(ll a,ll b,ll &x,ll &y){if(b==0){x=1;y=0;return;}exgcd(b,a%b,x,y);ll temp;temp=x;x=y;y=temp-(a/b)*y;return; } int main(){ll s,t,p,q,l;cin>>s>>t>>p>>q>>l;ll a=(p-q+l)%l,b=l,c=(t-s+l)%l,g=gcd(a,b);if(c%g){puts("Impossible");return 0;}a/=g;b/=g;c/=g;ll x,y;exgcd(a,b,x,y);x=(x%b+b)%b;x=x*c%b;cout<<x;return 0; }

?

轉(zhuǎn)載于:https://www.cnblogs.com/luyouqi233/p/7898974.html

總結(jié)

以上是生活随笔為你收集整理的POJ1061:青蛙的约会——题解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。