一道小学奥数题

这真的是小学奥数题吗,我怎么觉得有点不对劲。是现在的小学生太聪明了,还是我太笨了……

题目:求 1234567891011…20172018 除以 9 所得的余数。

解 1。我最开始的解法,写代码解的。一个数除以9的余数等于各位数字之和除以9的余数。

var s0 = "";

for (var i = 1; i <= 2018; i += 1) {
	s0 += ("" + i);
}

var s = 0;

for (var i = 0; i < s0.length; i += 1) {
	s += parseInt(s0[i]);
}

console.log(s % 9); // output: 3

然后我觉得不对。小学奥数哪能写代码解题的。然后我就上网搜,就搜到了别人的解法。

解 2。网上(“参考”的第二条)的解法。

$$\begin{eqnarray} 1234567891011…2018\mod9 \\
= (1+2+…+2018)\mod9 \\
= ((1+2018)\times2018 / 2)\mod9 \\
= 2037171\mod9 \\
= 2+0+3+7+1+7+1\mod9 \\
= 3 \end{eqnarray}$$

一开始看不懂从第一步到第二部的变法,不过最后弄懂了。

结论。果然是我太笨了……

参考

  1. 余数的性质以及一些例题。

  2. 1234567891011…2014 对 9 的余数。

← 大 O、大 Omega、大 Theta 记号的笔记 Goals in 2019 →