繁体   English   中英

Python中“超出内存限制”和“超出时间限制”的问题

[英]Problem of "Memory limit exceeded" and "Time limit exceeded" in Python

我有一个问题要在 网上判断 其解决方案是使整数之和例如输入 4,因此 1+2+3+4 输出 10。再例如,输入为 10,因此得到 1 到 10 的总和以得到输出 55​​ 和很快。

但是当我使用一个列表来存储数字并求和(列表)时,它给了我一个“超出内存限制”

这是代码:

n = int(raw_input())
lista = []
for x in range(1, n+1):
   lista.append(x)
print sum(lista)

我尝试了另一种不保存在列表中以避免超出内存的解决方案,所以我尝试了这个:

n = int(raw_input())
sum = 0
for i in xrange(1, n+1):
   sum = sum + i
print sum

但我得到“超出时间限制”。 这个问题的解决方案是什么?

请注意,输入的数字范围是 1≤ N ≤ 10^9。 当我尝试 10^9 时,需要很长时间才能得到答案。

另一个注意事项是每次测试的时间限制为 1 秒。

这是一个算术级数,计算为 S = ½(a1 + an)n,其中 a1 是第一个成员,在本例中为 1。 在这种情况下,an 是最后一个成员 n。

def arthimPSum(n):
    return round((1 + n)*n *0.5)

print(arthimPSum(10**9))

输出

500000000500000000

它只是一个算术级数,您可以在其中找到 n 个数字的总和,所以基本上公式是

总和 = n/2(2a+(n-1)d)

传递第一个数字,即 a =1 , n 是总数, d 是差异,即 1 。 它被简化为 n/2(2+(n-1)) = 0.5* n *(n+1)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM