本文共 822 字,大约阅读时间需要 2 分钟。
题目描述:
数字81有一个特殊的属性,其数字之和的某个幂等于81(九的平方)。 八十一(81),是拥有这个属性的第一个数字(不考虑一位数字)。 下一个是512.让我们看两个案例的细节 8+1=9 8 + 1 = 9 且 92=81 9 2 = 81 512=5+1+2=8 512 = 5 + 1 + 2 = 8 且 83=512 8 3 = 512我们需要创建一个函数power_sumDigTerm()
,它接收一个数字n并可以输出这个数字序列的第n
项。 我们上面提到的例子意味着:
power_sumDigTerm(1)== 81
power_sumDigTerm(2)== 512
代码如下:
这道题目的主要思路是创建一个新的数组,将所有可能的数字加入到数组中。 我们的首要目标就是要找出这些数字。这里需要巧妙的使用map()
函数: n=81a=sum(map(int, str(n)))
首先将输入的数字转换成字符串,对字符串中的每一个字符,也就是每一位数字用map
映射为int
格式,然后对他们求和。
map
映射判断,就可以找出所有符合条件的数字了。 def power_sumDigTerm(n): #your code here power_sum = [] for i in range(2, 100): for j in range(2, 50): pow_i = i ** j if sum(map(int, str(pow_i))) == i: power_sum.append(pow_i) power_sum.sort() return power_sum[n-1]
转载地址:http://pqmws.baihongyu.com/