[英]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.