056. 指数各位数字之和(Powerful digit sum)

一个古戈尔也就是\(10^{100}\)是一个天文数字,一后面跟着一百个零。\(100^{100}\)更是难以想像的大,一后面跟着两百个零。但是尽管这个数字很大,它们各位数字的和却只等于一。考虑两个自然数\(a,b\)形成的指数\(a^b(a,b<100)\),其最大的各位数字之和是多少?

分析:此题思路比较直接,暴力求解即可。在题目给它的范围内,\(a^b\)可以形成9801个数,计算这些数,求其各位数之和并返回其最大值,即为题目所求。

# time cost = 190 ms ± 515 µs

def main():
    str_sum = lambda y : sum([int(x) for x in str(y)])
    res = max([str_sum(a**b) for a in range(1,100) for b in range(1,100)])
    return res