この問題では、十六進表記された数における倍数判定を考える必要があります。

十六進表記された整数 において、以下のことが成り立ちます。

  • の下 桁が で割り切れるなら、 で割り切れる。(①)
  • の各桁の和が で割り切れるなら、 で割り切れる。(②)

これら つを同時に満たすとき、 で割り切れます。

以下は①、②の証明です。
桁として、上から桁目の数字(文字)を として説明します。
は以下のように表せます。

...

<①について>


を下一桁とそれ以外で分けて考えます。

...

すると、 で割り切れることと で割り切れることは同値であることが分かります。

<②について>


を以下のように、各桁の和とそれ以外に分けて考えます。

...

は各桁の和を表しています。

ここで、 で割り切れるため、上の式の左側はすべて で割り切れます。

すると、 で割り切れることと で割り切れることは同値であることが分かります。

これは 十進表記における、 の倍数の各桁の和が の倍数であることに似ています。

解答例(C++)

<追加問題>


十六進表記された整数 の倍数であるかどうかを判定してください。