【数学】百五減算と中国余剰定理

競プロに使いそうな数学
あくまで備忘録なんで雑に記録します

百五減算(年齢あてゲーム)例えば79
「あなたの年齢を 3 で割った余りを教えて下さい」と聞いて、例えば「 1 です」という答えを得る。同様に 5 と 7 で割った余りも尋ねてそれぞれ 4 , 2 であると教えてもらったとする。
そこで素早く 1 × 70 + 4 × 21 + 2 × 15 = 184 を計算し、184から105を引けるだけ引いていくと 184 – 105 = 79 となり、余りを聞いただけで「あなたの年齢は 79 歳ですね」と言い当てられるというわけである。
もちろんこの計算だけでは184歳である可能性もあるのだが、79歳か184歳かは相手を見ればすぐにわかるので、人間の年齢を当てるには十分である。

※中国剰余定理で考えれば、105以下でただ一つの解によって年齢を当てられる(105歳以上はちょっと・・・)

①一次不定方程式ax+by=cの整数解

2x + 4y = 1は存在しない
3x + 5y = 2は存在する

cが、a,bのGCMの倍数なら存在する!

つまりa, b互いに素なら、「ax + by = 1」が存在する

※中国剰余定理を解く準備として、ax + by = 1が必要だから存在するよ!ってこと

②一意性(105未満で79しかないよ)

与えられた二つの整数 m, n が互いに素ならば、任意に与えられる整数 a, b に対し、連立合同方程式
x ≡ a (mod m)
x ≡ b (mod n)
を満たす整数 x が mn を法として一意的に存在する

3で割ると2余り、5で割ると3余る数は、15未満では唯一、x = 8だよね剰余定理の基本
8 ≡ 2 (mod3)
8 ≡ 3 (mod5)

(2つ(PとQ)あったら、P – Qはm, nの公倍数で、mn以下ってのに矛盾するから、mn以下に1個)

※最終的には105以下で特定するために、
2 mod 3 / 3 mod 5 / 2 mod 7 っていう数字は唯1個だよねってこと

③中国剰余定理

『今物が有るが、その数はわからない。
3つずつにして物を数えると1余る、5で割ると4余り、7で割ると2余る。
物はいくつあるか?』

Ans = 3 + 1
Ans = 5m + 4
Ans = 7n + 2

①から、最初に求めておく
35x % 3 = 1
21y % 5 = 1
15z % 7 = 1
となる(x, y, z)=(2, 1, 1)
百五減算で言う(70, 21, 15)はこの35x, 21y, 15zのこと

35x × 1 + 21y × 4 + 15z × 2 = 184より、Ans = 79

【説明】
A % 3= a
A % 5= b
A % 7= c
35x % 3 = 1
21y % 5 = 1
15z % 7 = 1

コメント

タイトルとURLをコピーしました