Ruby
各桁の和と自身との和について
(「ピーター・フランクルの中学生でも分かる大学生にも解けない数学問題集②」
CHAPTER3のProblem4の一般化から)
自然数nをp進法で表したときの各桁の数の和をf(n)で表す。
a + f(a) = b + f(b) = c + f(c)
を満たすような,3つの異なる自然数a,b,cは存在だろうか。
元々は p = 10 で、
a = 10^13 - 108,
b = 10^13 - 99,
c = 10^13
等が条件を満たす。
さて、これを p < 8 のとき、力づくで解いた。
M = 7
N = 13
def f(i, m)
return i if i < m
s = 0
s += i % m + f(i / m, m)
s
end
(2..M).each{|m|
h = {}
(1..m ** N).each{|i|
j = i + f(i, m)
h.key?(j) ? h[j] = h[j].push(i) : h[j] = [i]
if h[j].size == 3
p [m, h[j].map{|k| k.to_s(m)}]
break
end
}
}
出力結果
[2, ["1111011", "1111100", "10000000"]]
[3, ["212", "220", "1000"]]
[4, ["3333232", "3333301", "10000000"]]
[5, ["34", "41", "100"]]
[6, ["555555452", "555555501", "1000000000"]]
[7, ["55", "61", "100"]]
0 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。