数字の各桁の和と積
http://quiz-tairiku.com/q.cgi?mode=view&no=18479
(1) 整数 N の各桁の数の和を新たな整数 N とする,という操作を何度も繰り返す。最初,N=2016^2016 とすると,最終的に 1 桁の整数になるが,その整数は?
library(gmp)
N = as.bigz(2016)^2016
for (i in 1:5) {
N = sum(as.integer(unlist(strsplit(as.character(N), ""))))
print(N)
}
答えは 9。
2016 は 9 の倍数(各桁の数字の和が 9 の倍数)。9 の倍数の羃乗は 9 の倍数(各桁の数字の和が 9 の倍数)。よって,各桁の和を取っていけば,いずれは 9 になる。
N = as.bigz(2017)^2017
for (i in 1:5) {
N = sum(as.integer(unlist(strsplit(as.character(N), ""))))
print(N)
}
答えは 1 になる。計算せずにわかるかな?
(2) 整数 N の各桁の数の積を新たな整数 N とする,という操作を何度も繰り返す。最初,N=2016^k とすると,最終的に 1 桁の整数になる。但し,k は 2016 以上の整数なら,なんでもよい。その「1 桁の整数になる」と答えた簡単な理由とともに答えよ。
N = as.bigz(2016)^9999
for (i in 1:5) {
N = prod(as.integer(unlist(strsplit(as.character(N), ""))))
print(N)
}
答えは 0。
どんな大きな数(?)からスタートしても,各桁には(いずれは) 0 が含まれることが期待される(??)。だとしたら,各桁の積は 0 以外にあり得ない。
しかし証明は?
※コメント投稿者のブログIDはブログ作成者のみに通知されます