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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

青蛙的约会(POJ-1061)

發(fā)布時間:2025/3/17 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 青蛙的约会(POJ-1061) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Description

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

Input

輸入只包括一行5個整數(shù)x,y,m,n,L,其中x≠y < 2000000000,0 < m、n < 2000000000,0 < L < 2100000000。
Output

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

Sample Input

1 2 3 4 5

Sample Output

4

思路:

根據(jù)題意,兩只青蛙在一環(huán)形的路徑跳躍,當兩只青蛙跳到同一個點上才算遇到,即當兩只青蛙的路程差等于環(huán)路周長的整數(shù)倍時才算相遇。

設:青蛙跳的次數(shù)是 t,A 青蛙與 B 青蛙的所跳的圈數(shù)差是 p

由題意:

由于 x、y、m、n、L 均是已知量,因此方程可轉為?:?的形式

令:

則原方程有線性同余方程的形式:?①

根據(jù)線性同余方程定理1,要想使方程有整數(shù)解,需要滿足:

根據(jù)拓展歐幾里德算法,求出一組解 ,并令?

故有:? ②

方程 ② 兩邊同時乘以??得:

與 ① 式比較系數(shù)得 ?是一組解

由于所得的一組解中的? 不一定是最小正整數(shù)解,根據(jù)線性同余方程定理2

可得:

故:?是 x 的所有解

為使 x 盡可能的小,對 b 進行處理,即令:

因此,方程的最小正整數(shù)解為:?

Source Program

#include<iostream> #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> #include<string> #include<cstdlib> #include<queue> #include<set> #include<map> #include<stack> #include<vector> #define INF 0x3f3f3f3f #define PI acos(-1.0) #define N 100001 #define MOD 123 #define E 1e-6 using namespace std; int Extended_GCD(long long a,long long b,long long &x,long long &y){if(b==0){x=1;y=0;return a;}long long gcd=Extended_GCD(b,a%b,y,x);y-=x*(a/b);return gcd; } int main(){long long x,y,m,n,l;cin>>x>>y>>m>>n>>l;long long t,p;long long a=x-y,b=n-m;if(b<0) {b=-b;a=-a;}int gcd=Extended_GCD(b,l,t,p);if(a%gcd)cout<<"Impossible"<<endl;elsecout<<((t*a/gcd)%(l/gcd)+(l/gcd))%(l/gcd)<<endl;return 0; }

總結

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

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