019: 「1+1=?」のヒント¶
難易度: ☆☆
ヒント1
F2 の中身は、常に 0 または 1 にできます。
value % 2 を保存すれば、F2(2) も F2(3) も自然に扱えます。
ヒント2
Pythonでは、+ の動作を __add__、* の動作を __mul__ で定義できます。
repr(x) の表示は __repr__ で定義します。
ヒント3
\(F_2\) の加法と減法は同じです。
どちらも、2で割った余りとして計算できます。
そのため、-F2(1) は F2(1) になります。
ヒント4
\(F_2\) で0の乗法逆元は存在しません。
inverse() は F2(1) に対してだけ F2(1) を返し、F2(0) に対しては ZeroDivisionError を送出します。