Codewars第十四天–Numbers that are a power of their sum of digits

本文探讨了一种特殊性质的数字——其数字之和的幂等于该数字本身。通过使用Python编程,我们定义了一个函数power_sumDigTerm()来找出符合这一特性的数字序列中的第n个数,并详细介绍了实现过程。

Codewars第十四天–Numbers that are a power of their sum of digits

题目描述:
数字81有一个特殊的属性,其数字之和的某个幂等于81(九的平方)。 八十一(81),是拥有这个属性的第一个数字(不考虑一位数字)。 下一个是512.让我们看两个案例的细节
8+1=98+1=992=8192=81
512=5+1+2=8512=5+1+2=883=51283=512

我们需要创建一个函数power_sumDigTerm(),它接收一个数字n并可以输出这个数字序列的第n项。 我们上面提到的例子意味着:

power_sumDigTerm(1)== 81
power_sumDigTerm(2)== 512

代码如下:
这道题目的主要思路是创建一个新的数组,将所有可能的数字加入到数组中。
我们的首要目标就是要找出这些数字。这里需要巧妙的使用map() 函数:

n=81
a=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] 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值