タイトル説明
側面を見ることが必要であるように、2匹のインターネット知人のカエル、そして、彼らは、喜んで話をしました。彼らは緯度の同じ行に住んでいることを見つけるために喜んでいるので、あなたがこれまでに会うまで、彼らは西のホップに同意しました。彼らは非常に重要なことを忘れて開始する前に、しかし、他の機能を求めないどちらも、特定の場所を満たすために何の合意はありません。しかし、カエルがいる限り、彼らが感じるように、互いにさんに遭遇し、常に一定の方向ジャンプに移動してきた、非常に楽観視しています。しかし、これらの二つのカエルが同時に同じポイントにジャンプしない限り、それ以外の場合は会うことはありませんすることは不可能です。これら二つの楽観的なカエルを助けるために、あなたはそれが2匹のカエルを満たすことができるかどうかを判断するプログラムを作成するように求められ、どのような時に会う予定です。
我々は、尻軸を受けるように我々は、1メートル単位の長さ、東から西への正方向の原点の行で0度所定の経度および緯度、2匹のカエルを蛙及びカエルBと呼ばれた呼び出し。カエルが提供される始点カエルBの座標をy、出発点は、x座標です。カエルM mのジャンプ、ジャンプカエルN B mの二カエルジャンプが同じ時間がかかります。緯度線の長さLメートル。ジャンプがそれらを見つけるの後に今、あなたは何回か会う予定です。
入力形式
入力ライン5は、Y、M、唯一の整数xを含み、nは、L
其中0 <X≠Y <= 2000000000,0 <M、N <= 2000000000,0 <L <=21億。
出力フォーマット
あなたは、出力ライン「不可能」会うことがない場合、出力は、日数の必要数を満たすことができます。
サンプル入力と出力
入力#1
1 2 3 4 5
出力#1
4
この質問はするにはあまりにも明白であるユークリッドアルゴリズムの適用を拡大します。
我々は、座標はカエルであり、この時間はtがカエルジャンプを満たす2回提供してきたX + M * tのカエルBの座標、Yさt + n-は*タイトルを与えることを意図し、
M * + T-X(Y + N-T *)は、のL * P =(Pは整数)
ここで注意することは意味座標差は、長さLの整数倍であります!(単に紙をシミュレートすることがあります)
だから何についてのユークリッドアルゴリズムを拡張し、私はあなたが詳細をお知りになりたい場合は、ここで説明するより多くをしないと、見ることができますこのブログを
1つの#include <ビット/ STDC ++ H> 2 使用して 名前空間STDを、 3 長い 長いX、Y、M、N、L。 4 ボイド(exgcd 長い 長い、長い 長い B、長い 長い&D、長い 長い&X0、長い ロング・Y0) 5 { 6 場合(!b)の 7 { 8 D = 。 9 X0 = 1 。 10 Y0 = 0 。 11 } 12 他の 13 { 14 exgcd(B、%のB、D、X0、Y0)。 15 長い 長い T = X0、X0 = Y0、Y0 = TA / b *表Y0。 16 } 17 } 18 のint main()の 19 { 20 長い 長Y0、X0、D。 21 のscanf(" %LLD%LLD%LLD%LLD%LLD "、およびX&Y、&M、&N、&L)。 22 もし(Mの==のN) 23 { 24の プット(" 不可" )。 25 リターン 0 ; 26 } 27 であれば(N < M) 28 { 29 スワップ(M、N)。 30 スワップ(X、Y) 31 } 32 exgcd(N 、M、L、D、X0、Y0)。 33 であれば((XY)%D =!0 ) 34の プット(" 不可" )。 35 他の 36 のprintf(" %のLLD "、(X0×(X-Y)/ D%(L / D)+ L / D)%(L / D))。 37 リターン 0 。 38 }