Login_ @ 2021-09-01 23:08:14
import math
a=[0]*500
p=int(input())
s=int(pow(2,p)-1)
c=s
c2=s
count=int(0)
cnt=int(500)
while c:
count+=1
c//=10
print(count)
while cnt:
cnt-=1
a[cnt]=c2%10
c2//=10
if 500-count==cnt:
break
for i in range(500):
print(a[i],end='')
if (i+1)%50==0:
print()
by guoyunfeng @ 2022-08-02 14:31:05
即便是用python,也不应该奢望能够算出所有的位数,浪费时间和空间。
第一,应该还是用log函数,快速求位数。 第二,应该直接用pow,求最后500位。没有必要全部算出来。
p = int(input())
from math import log
d = int(p*log(2,10)) + 1
n = pow(2,p,10**500) - 1
print(d)
s = '{:0>500d}'.format(n)
while s:
print(s[:50])
s = s[50:]