题目如下
如果把一个正整数的每一位都平方后再求和,得到一个新的正整数。
对新产生的正整数再做同样的处理。
如此一来,你会发现,不管开始取的是什么数字,
最终如果不是落入1,就是落入同一个循环圈。
请写出这个循环圈中最大的那个数字。
请填写该最大数字。
注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。
解析
我们在这里直接进行暴力求解,当出现重复的数字的时候我们停止循环,我们将计算的数纳入列表并且将最后的数输出,我们就会看出那些在循环中,然后就可以直接看出最大的了
x = 1529914471745454768786785
res = []
s = 0
while s not in res:
res.append(s)
s = 0
a = list(str(x))
for i in range(len(a)):
s += int(a[i])**2
x = s
print(s)
print(res)
例如输出:
89
[0, 858, 153, 35, 34, 25, 29, 85, 89, 145, 42, 20, 4, 16, 37, 58]
所以89后面的就在循环,最大为145