[NOIP 2003 普及组] 麦森数

一篇 python 题解。

先看第一问。一个数 的位数,相当于 。用我们小学二年级就学过的换底公式,可以得到:

再看第二问,要我们求出 的值。python 中的 pow 函数还可以接受一个参数,表示结果对其取模。pow 函数内部使用快速幂实现,速度非常快,同时其边算边取模避免浪费大量时间。

手写高精题,一边玩去。

from math import log2

n = int(input())
print(int(n / log2(10)) + 1)
P = pow(10, 500)
x = pow(2, n, P)
x = (x - 1) % P
s = str(x)
s = '0' * (500 - len(s)) + s
for i in range(10):
    for j in range(50):
        print(s[i * 50 + j], end="")
    print()
posted @ 2025-06-06 19:33  MrPython  阅读(7)  评论(0)    收藏  举报  来源