簡體   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