A - Your First Modulo Output

2 secs 1024 MB
uni_kakurenbo's icon uni_kakurenbo

概要

TGC003,いかがでしたでしょうか.

今回は,実装は軽く心地よく!をモットーに問題セットを構成しました.

問題によっては「実装つらいよ~~」となった方もいらっしゃったかもしれません.
「ひょっとしたらもっと実装が簡単な方針があったのではないか」と考えてみるといいかも?

問題原案:uni_kakurenbo

解説

任意の非負整数 xx について,「xx の各桁の和を 99 で割ったあまり」は「xx そのものを 99 で割ったあまり」に一致することが知られています.

したがって,答えは Xmod9X \bmod 9 に等しいです.


このことを証明しましょう.

非負整数 xx10d(0d)10^d \scriptsize \; (0 \leq d) の位を DdD_d と書くことにします.(0Dd<10)\scriptsize (0 \leq D_d < 10)
このとき

  • x=0dDd×10d\displaystyle x = \sum_{0 \leq d} D_d \times 10^d

です.

任意の 33 非負整数 a,b,ka, b, k について abakbka \equiv b \Leftrightarrow a^k \equiv b^k であることを用いると,

  • x0dDd×10d0dDd×1d0dDd(mod9)\displaystyle x \equiv \sum_{0 \leq d} D_d \times 10^d \equiv \sum_{0 \leq d} D_d \times 1^d \equiv \sum_{0 \leq d} D_d \pmod 9

が得られます.

解説:uni_kakurenbo

実装例

C++
Python