X(n) を10進法で表した X(10) は次のように表せられます:
X(10)= 0+1∗n+2∗n2+...+(n−1)∗(nn−1)+0∗nn+1∗nn+1+...+(n−1)∗na∗n−1
n と a の制約から,愚直に計算すると間に合いません。
作問者の解法を説明します。(これ以外に簡素な解法があると思います。)
N=X(10)−n∗X(10) として,N を考える。
すると,N=n+n2+...+nn−1−(n−1)∗nn+nn+1+nn+2+...+n2n−1−(n−1)∗n2n+...+(n−1)∗nan−1−(n−1)∗nan である。
N は,(初項 n ,公比 n ,項数 an−1 の等比数列の和) − (初項 nn ,公比 nn,項数 a−1 の等比数列の和) - (n−1)∗nan と表せられるので,これを和の公式を用いて計算することで,計算量を削減できます。
割り算をする際の余りの取り方に注意してください。
a=1 の場合の等比数列の和を求め,がんばる(追記します)方法もあります。こちらの方が楽です。