モッドの加減算の応用

前項「アルゴリズの取り出し」では「じゃんけん判定」の問題を扱いました。そこでは、まず、Aさん、Bさんの手(0、1、2のいずれか1つ)を、それぞれ変数XA、XBが保有するとしたとき、次が成り立つことを述べました。

             (Aさんの結果)
(ⅰ)XA=XB      ⇒  相子
(ⅱ)(XA+1)mod(3)=XB  ⇒  勝ち
(ⅲ)(XA+2)mod(3)=XB  ⇒  負け

これに対して、つぎのような一般に知られた判定法も紹介しました。

             (Aさんの結果)
(Ⅰ)(XA-XB+3)mod(3)=0 ⇒  相子
(Ⅱ)(XA-XB+3)mod(3)=1 ⇒  負け
(Ⅲ)(XA-XB+3)mod(3)=2 ⇒  勝ち

そして、これら2つの方法は同等であり、それはmodの加減乗算の定理を用いて証明できますと述べました。

直前の投稿「modについて」で、modの加算、減算、乗算について紹介しましたので、これらを用いて上のことを証明しましょう。

(ⅰ)は(Ⅰ)と同等

 XA=XB
∴XA mod(3)=XB mod(3)
∴XA mod(3)+3mod(3)=XB mod(3)  ←3mod(3)は0だから
∴(XA+3)mod(3)=XB mod(3)  ←modの加算を使用
∴(XA+3)mod(3)-XB mod(3)=0
∴(XA-XB+3)mod(3)=0    ←modの加減算を使用
(ⅰ)の式から(Ⅰ)の式を導くことができました。

(ⅱ)は(Ⅲ)と同等

  (XA+1)mod(3)=XB
∴XA mod(3)+1mod(3)=XB   ←modの加算を使用
∴XA mod(3)=XB-1mod(3)
∴XA mod(3)-XB=-1mod(3)
∴XA mod(3)-XB mod(3)=-1mod(3) ←XB=XB mod(3)
∴(XA-XB)mod(3)=-1mod(3)   ←modの減算を使用
∴(XA-XB)mod(3)+3mod(3)=3mod(3)-1mod(3) ←3mod(3)=0
∴(XA-XB+3)mod(3)=(3-1)mod(3) ← modの加算、減算を使用
∴(XA-XB+3)mod(3)=2
(ⅱ)の式から(Ⅲ)の式を導くことができました。

(ⅲ)は(Ⅱ)と同等

 (XA+2)mod(3)=XB
∴(XA+2)mod(3)+1mod(3)=XB+1 ←左辺には1mod(3)を右辺には1を加算
(ここに1mod(3) =1)
∴(XA+2)mod(3)+1mod(3)-XB=1
∴(XA+2)mod(3)+1mod(3)-XB mod(3)=1  ←XB=XB mod(3)だから
∴(XA+2+1-XB)mod(3)=1    ←modの加算、減算を使用
∴(XA-XB+3)mod(3)=1
(ⅲ)の式から(Ⅱ)の式を導くことができました。

こうして、2つの判定法は同等であることが証明されました。