首页 > 其他 > 详细

Project Euler 63: Powerful digit counts

时间:2019-11-23 18:34:56      阅读:74      评论:0      收藏:0      [点我收藏+]

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

分析:设题目要求的幂的底为\(n\),指数为\(k\),则这个幂应为\(k\)位数,则有:
\[ 10^{k-1}<n^k<10^k \Rightarrow k-1<k\cdot log_{10}n<k \]
因为\(k\ge1\),则对于不等式\(k\cdot log_{10}n<k\),有\(log_{10}n<1\Rightarrow n<10\)。对于另一边有:
\[ k-1<k\cdot log_{10}k\Rightarrow k<\frac{1}{1-log_{10}n} \]
则我们有\(1\le n<10,1\le 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

原文:https://www.cnblogs.com/metaquant/p/11918808.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!