作者tml (流刑人形)
看板puzzle
标题[中译] ProjectEuler 414 Kaprekar constant
时间Wed Feb 13 08:59:32 2013
414. Kaprekar constant
http://projecteuler.net/problem=414
6174是一个非常特别的数字。如果我们对这四位数重新排列,用降幂排列减去升幂排列
(即最大组合减最小组合),我们会得到7641 - 1467 = 6174。
更特别的是,如果我们选任意四位数并不断做同样的操作,最後一定会变成6174或是0
(一开始选了四个一样的数字)。
即使是小於四位数的数字,如果我们在前方补0到四位,这个规则同样适用。
例如,我们选0837进行操作:
8730 - 0378 = 8352
8532 - 2358 = 6174
我们称6174为卡布列克常数(或称黑洞数),并称这种不断排序再相减直到重复或为0的
过程为卡布列克程序。
我们也可以计算其他进位制下的卡布列克程序。
但是,卡布列克常数并不一定存在。这个程序可能在某些情况下陷入循环或是不同的起
始数会收敛到不同的数。
然而,其实可以证明,在b = 6t + 3 ≠ 9进位下的五位数,必定存在卡布列克常数。
例如:15进位下的(10, 4, 14, 9, 5)
21进位下的(14, 6, 20, 13, 7)
定义C_b为b进制的五位数卡布列克常数,并定义sb(i)为
‧0,如果i = C_b或i在写成b进制时的五位数皆相同,或者是
‧要对i操作几次b进位的卡布列克程序才会收敛到C_b,若非上列情形。
注意到我们可以对所有i < b^5定义sb(i)。如果i在写成b进位时小於五位数,那前面都
先补0到五位数才开始进行操作。
定义S(b)为所有0 < i < b^5情况下的sb(i)的总和。
例如,S(15) = 5274369
S(111) = 400668930299
请求出对所有2 ≦ k ≦ 300情况下,S(6k + 3)的总和,并给出最後十八位数作为答案。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 129.2.129.161