割ってから足す
平方数を 10 で割った余りは周期 10 で,その値は 1, 4, 9, 6, 5, 6, 9, 4, 1, 0 です。
これらの和は 45 で,2 倍した 90 は 10 の倍数。
回目に表示される数を とおいて, を 10 で割った余りを とおくと,これは 20 を周期にもちます。
数式で書くとなにやら仰々しいのですが,「全部足してから 10 で割る」のと「10 で割った余りを足して,最後にもう一回 10 で割る」のは同じです。
の関係式を求めましょう。 から
\begin{align*}
g(n+1) &=\bmod (S_{n+1},\, 10)=\bmod (S_n+(n+1)^2,\, 10)\\
&=\bmod\big(\bmod(S_n,\,10)+ \bmod\left((n+1)^2,\, 10\right),\, 10\Big)\\
&=\bmod\Big(g(n)+\bmod\left((n+1)^2,\, 10\right),\, 10\Big)
\end{align*}
からスタートして
「 を 10 で割った余り 4 を足して 10 で割る」のような計算を 20 回やることは手計算でも簡単でしょう。
の 1 の位が 5 になるのは が 2, 5, 9, 10, 14, 17 のときで 6 回あります。
答えはこの 倍なので「300 回」です。
おまけ:プログラムで計算
項が 1000 個しかないので愚直にコードを書いても十分高速です。約 0.003 秒でした。
In[]:= AbsoluteTiming[
f[n_] := Mod[n (n + 1) (2 n + 1)/6, 10] == 5;
ans = Length@Select[Range@1000, f]]
Out[]= {0.0030521, 300}
variee.hatenablog.com