Project Euler 63: Powerful digit counts

Posted metaquant

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Project Euler 63: Powerful digit counts相关的知识,希望对你有一定的参考价值。

五位数(16807=7^5)也是一个五次幂,同样的,九位数(134217728=8^9)也是一个九次幂。求有多少个(n)位正整数同时也是(n)次幂?

分析:设题目要求的幂的底为(n),指数为(k),则这个幂应为(k)位数,则有:
[ 10^{k-1}<n^k<10^k Rightarrow k-1<kcdot log_{10}n<k ]
因为(kge1),则对于不等式(kcdot log_{10}n<k),有(log_{10}n<1Rightarrow n<10)。对于另一边有:
[ k-1<kcdot log_{10}kRightarrow k<frac{1}{1-log_{10}n} ]
则我们有(1le n<10,1le k < 1/(1-log_{10}n))。因此我产只需要遍历所有符合条件的(n),统计在特定的(n)时有多少个符合条件的(k)并加总,即为题目所求。

# time cost = 2.8 μs ± 29.8 ns

from math import log10

def main():
    c = 0
    for n in range(1,10):
        c += int(1/(1-log10(n)))
    return c

以上是关于Project Euler 63: Powerful digit counts的主要内容,如果未能解决你的问题,请参考以下文章

Project Euler 109 :Darts 飞镖

Project Euler 5

Project Euler

project euler 169

Project Euler

Project Euler 3