码迷,mamicode.com
首页 > 其他好文 > 详细

Project Euler 63: Powerful digit counts

时间:2019-11-23 18:12:55      阅读:46      评论:0      收藏:0      [点我收藏+]

标签:tar   project   分析   dig   cost   spl   port   题目   main   

五位数\(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

标签:tar   project   分析   dig   cost   spl   port   题目   main   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!