0030. 五次幂和数
* * * *
拉格朗日计划
* * * *
五次幂和数

只有三个数可以写成其各位数字的四次幂之和: \begin{align*} 1634=1^4+6^4+3^4+4^4 \\ 8208=8^4+2^4+0^4+8^4 \\ 9474=9^4+4^4+7^4+4^4 \end{align*} 由于$1^4=1$并非求和,因而此处不计入内。

以上三个数之和是$1634+8208+9474=19316$。

找出所有可以写成其各位数字的五次幂之和的数,并求这些数的和。

本题难度:



解答

依次写出每个数的五次幂: \begin{align*} 0^5&=0 \\ 1^5&=1 \\ 2^5&=32 \\ 3^5&=243 \\ 4^5&=1024 \\ 5^5&=3125 \\ 6^5&=7776 \\ 7^5&=16807 \\ 8^5&=32768 \\ 9^5&=59409 \end{align*} 若d是满足条件的数,则按题意它至少应该有两位,此外$7\times 9^5< 420000 < 1000000$,因此它最多不超过六位。

若d是两位数,则显然它只能包含$0,1,2$, 简单尝试即得不存在这样的d。

同理若d是三位数,则它只能包含$0,1,2,3$, 考察3的数量也可得不存在这样的d。

四到六位数的情况我们用程序来搜索,共有六个这样的数:$4150, 4151, 54748, 92727, 93084, 194979$,它们的和是$443839$。

q=dict(zip("0123456789",[0,1,32,243,1024,3125,7776,16807,32768,59049]))

d=[i for i in range(1000,1000000) if sum(q[j] for j in str(i))==i]

print sum(d), d