四位玫瑰数
描述
四位玫瑰数是4位数的自幂数。自幂数是指一个 n 位数,它的每个位上的数字的 n 次幂之和等于它本身。
例如:当n为3时,有1^3 + 5^3 + 3^3 = 153,153即是n为3时的一个自幂数,3位数的自幂数被称为水仙花数。
请输出所有4位数的四位玫瑰数,按照从小到大顺序,每个数字一行。
注:被题目给的示例坑了半天,示例并不是给出的结果
笨办法:
sum=0
for i in range(1000,10000):
a = i
sum=0
for j in range(4):
sum = sum+pow(a%10,4)
a = a//10
if(sum==i):
print(i)
注意:一直调整不对,是因为没有对求和及时清0,以后在涉及到变量和累加的情况时,一定要清0
聪明办法:利用str函数给整数加了引号,对字符串操作,更加方便把每位数取出来,然后eval()去引号,就可以快速操作每一位求4次方。
s = ""
for i in range(1000, 10000):
t = str(i)
if pow(eval(t[0]),4) + pow(eval(t[1]),4) + pow(eval(t[2]),4) + pow(eval(t[3]),4) == i :
print(i)