CaptainRX @ 2020-07-28 17:18:14
n=int(input())
m=(2**n)-1
a=0
list1=[]
while m!=0:
a+=1
list1.insert(0,m%10)
m=m//10
b=len(list1)
if b<500:
for i in range(500-b):
list1.insert(0,0)
print(a)
for i in range(len(list1)):
print(list1[i],end='')
if (i+1)%50==0:
print(end='\n')
初学python,请大佬指点,十分感谢!
by garethhkm2023 @ 2020-07-28 18:56:06
很多问题欸 :/
首先尽管python(pypy3)是万能的,2**n在n太大的时候还是会超时,n=3e6没可能,先不管
while m!=0:
a+=1
list1.insert(0,m%10)
m=m//10
呃 list.insert 是 O(n)的
while m != 0:
a += 1
list1.append(m % 10) # O(1)
list1.reverse() # O(n)
b=len(list1)
if b<500:
for i in range(500-b):
list1.insert(0,0)
如果b>500,range(负数)是空的 = nop,所以不用判断b<500
#上面先不要reverse
b=len(list1)
for i in range(500-b):
list1.append(0) # 同上
list1.reverse()
下面没有问题,不过我的写法不同,可以参考一下(?)
from math import floor, log# 位数
n = int(input())
print (floor(n * log(2, 10))+1)
# 求(2^n-1) % 10**500
# 可以用pow(2,n,10**500)-1 这可不会TLE 因为不用(太)高精
m = pow(2, n, 10 ** 500) - 1
# mofa
m = str(m).zfill(500)
for i in range(10):
print (m[i*50:i*50+50])
python大法好
by CaptainRX @ 2020-07-28 19:17:10
非常感谢
by CaptainRX @ 2020-07-28 19:44:30
@garethhkm2023 非常感谢,但是按照大佬你的指点修改了一下还是四个超时,四个错误,不是很明白
by garethhkm2023 @ 2020-07-28 19:48:10
代码
by garethhkm2023 @ 2020-07-28 20:03:03
首先尽管python(pypy3)是万能的,2**n在n太大的时候还是会超时,n=3e6没可能,先不管
对不起我字体用了小了 OwO
把m=2**n-1改成print(n*log(2,10))
如无意外是必须的
by CaptainRX @ 2020-07-28 20:46:05
n=int(input())
m=pow(2,n)
a=0
list1=[]
while m!=0:
a+=1
list1.append(m%10)
m=m//10
b=len(list1)
for i in range(500-b):
list1.append(0)
list1.reverse()
print(a)
for i in range(len(list1)):
print(list1[i],end='')
if (i+1)%50==0:
print(end='\n')
@garethhkm2023
把m=2*n-1改成print(nlog(2,10))?
2**n太大数据会超我知道了,但其他的能否解释的再详细一点 QAQ
by garethhkm2023 @ 2020-07-29 11:12:20
对不起昨天没看到
就是把位数那一部分改成n*log(2,10) 原因如下
2^n = 10^(n*log_2(10)) 当中对数的基数是10 对吧
而10^x的位数为floor(x)+1 (看看例子就可以10^2.5什么的)
所以2^n位数为floor(n*log_2(10))+1
python写法是
from math import floor,log # 不要import * 否则你没有了pow
floor(n*log(2,10))+1
@CaptainRX
by garethhkm2023 @ 2020-07-29 11:13:14
啊还有可以这样写
from math import log10
floor(n*log10(2))+1
by CaptainRX @ 2020-07-29 14:35:14
@garethhkm2023 非常感谢