#(数論、中国の剰余定理、拡張ユークリッドの互除法)羅区P1516カエルの予定(増加+ /地方の選挙 - )

タイトル説明

側面を見ることが必要であるように、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つの
分析:設けがk回ジャンプ;
カエル:現在の座標(X + K×m個)%の Lと、
カエルB:現在の座標(Y + K×m個)%の L、
Kがあるかどうかを尋ねる、X + Kよう* M = Y + K×n個 (MOD L);
次いで得る:K×(Mn)はY-X = (MOD L)を
;したがって、B、= MNレット= YX
:*のK + T問題はと等価ですL = B、
すなわち;(MN)* X +のL *のY = bが
X * '+ B * Y' = GCD(B)を得る;
コード:

書式#include <iostreamの>
の#include <cstdioを>
に#define LL長い長い
名前空間stdを使用。
ANS LL、X1、Y1;

LL(LL&Y1、LL&X1、LLのB LL)exgcd
{
(!b)の場合
、{
X1 = 1。
Y1 = 0;
返します。
}
ANS = exgcd(B、%のB、X1、Y1)。
LLトン= X1;
X1 = Y1;
Y1 = TA / b *表Y1;
ANSを返します。
}

)(INTメイン
{
LL N、M、X、Y、L。
CIN >> X >> Y >> M >> N >> L。
= NM、A = XY B LL。
(B <0)であれば
{
B = -b。
= -a;
} // ????
exgcd(B、L、X1、Y1)。
もし(!%のANS = 0)
はcout << "インポッシブル"。

COUT <<((X1 *(/ ANS))%(L / ANS)+(L / ANS))%(L / ANS)。
}

 
 

おすすめ

転載: www.cnblogs.com/little-cute-hjr/p/11462049.html