【发布时间】:2019-11-07 06:26:53
【问题描述】:
我正在解决一个需要整数列表或大小为 10^18 的字典的问题。运行代码时,编译器会抛出一条错误消息“超出内存限制”。
这是我的代码:
def fun(l, r, p):
#f = [None, 1, 1]
f = {0:0, 1:1, 2:1}
su = 0
for i in range(1, r):
if i%2 == 0:
f[i+2] = 2*f[i+1] - f[i] + 2
#f.append(2*f[i+1] - f[i] + 2)
else:
f[i+2] = 3*f[i]
#f.append(3*f[i])
for k in range(l, r):
su = su + f[k]
su = (su + f[r]) % p
print(su)
t, p = input().split()
p = int(p)
t = int(t)
#t = 3
#p = 100000007
for i in range(t):
l , r = input().split()
l = int(l)
r = int(r)
fun(l, r, p)
它显示超出内存限制,最大内存使用量为 306612 KiB。
【问题讨论】:
-
您真的有一台内存为 1 EB 的计算机吗?因为如果你有那个,你一定是来自遥远未来的时间旅行者,我想借你的时间机器。
-
您必须设计一种在有限内存空间中运行的算法。你不能指望获得无限量的内存......至少在这个时候...... 10^18?
标签: python memory python-3.5