水仙花数
是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身
例如:1^ 3 + 5^ 3+ 3^3 = 153
四叶玫瑰数
是指四位数各位上的数字的四次方之和等于本身的数
例如 :1^ 4 + 6^ 4 + 3^ 4 + 4^4 = 1634
代码实现
# 给定一个数字N,代表N位的数, 且指数为N
# 当N为3时,有1^3 + 5^3 + 3^3 = 153
# 当N为4时,有1^4 + 6^4 + 3^4 + 4^4 = 1634
import math
N = int(input())
# 根据数字N,产生一个N位数
for k in range(int(math.pow(10,N-1)),int(math.pow(10,N))):
ssm = 0
x = k
ls = []
# 给每一位数进行分解
while x:
res = x % 10
x = x // 10
# 保存每一位数
ls.append(res)
ssm += math.pow(res,N)
if int(ssm) == k:
ls.reverse()
# 输出过程
sa = str("^"+str(N)+" + ").join(list(map(str,ls)))
sa += "^"+str(N)
print("{:s} = {:d}".format(sa,int(ssm)))
测试1:
4
1^4 + 6^4 + 3^4 + 4^4 = 1634
8^4 + 2^4 + 0^4 + 8^4 = 8208
9^4 + 4^4 + 7^4 + 4^4 = 9474
测试2:
3
1^3 + 5^3 + 3^3 = 153
3^3 + 7^3 + 0^3 = 370
3^3 + 7^3 + 1^3 = 371
4^3 + 0^3 + 7^3 = 407