E - Σ[k=0..10^100]floor(X/10^k) Editorial by Kiri8128


多倍長演算を使って簡単に計算する方法を示します。

\(X_i\)\(X\) の下から \(i\) 桁目の数字とします。 \(a \bmod b\)\(a\)\(b\) で割った余りを表すことにします。 また \(\displaystyle s = \sum_{i}{X_i}\)\(X\) の各位の数の和とします。 求めるものは、

\(\displaystyle \sum_{k=0}^{\infty} \left \lfloor \frac{X}{10^k} \right \rfloor\)

\(=\displaystyle \sum_{k=0}^{\infty} \frac{X}{10^k} - \sum_{k=0}^{\infty} \frac{X\bmod 10^k}{10^k}\)

\(=\displaystyle \sum_{k=0}^{\infty} \frac{X}{10^k} - \sum_{i}\sum_{k=1}^{\infty} \frac{X_i}{10^k}\)

\(=\displaystyle \frac{10X}{9} - \sum_{i}\frac{X_i}{9}\)

\(=\displaystyle \frac{10X-s}{9}\)

と表せます。これは多倍長演算ができる言語であれば簡単に計算できます。

AC コード(PyPy3)

posted:
last update: