python中的内存限制超出错误

时间:2018-08-10 05:58:47

标签: python

sum=0
n=int(input())
x = list(map(int, input().rstrip().split()))
for i in range(n):
    str1=str(2**x[i])
    if(len(str1)>2):
        str1[len(str1)-2 :]
    else:
        str1
    sum+=int(str1)
print(sum%100)

输入

3

1 2 3

输出

14

Constraints
 1<=n<=10^7
 0<=x<=10^18

此代码适用于较小的值,例如n = 4&x = 8,7,6,4,输出为= 64。但不适用于给定的约束条件。

1 个答案:

答案 0 :(得分:0)

好吧,因为你这样做

2**x[i] 

产生一个整数值,当x变得足够大时,它肯定会失败。

您可以进行数学计算:

假设您的计算机具有8GB主内存,那将是8*8*1024^3=68719476736位内存。因此,可以跨越您的整个的单个最大值(不可能变大,但我只想强调这里的物理极限)是2**68719476736,它位于某处在2^(10^10)2^(10^11)

之间

就目前而言,我认为您的代码不适用于如此大的数字。