[英]Python: search a list of numbers in a list of very large numbers, allowing + or - 5 error
[英]List of combination python very large numbers
對於非常大的n,我需要列出n個數字中k個所有可能組合的列表。 我遇到了我的列表大小迅速超過500000的問題,而python似乎處理得不太好。 但是,我想超越這個數億。 我該如何處理? 非常感謝!
DP不能用於很大的數字,因為存儲如此大的列表會導致MemoryError
。 想法是即時計算事物並記錄所需的值。
def comb(n, k):
deno = 1
num = 1
result = 1
#set the value of deno and num bounds
if k > n - k:
num_val = k + 1
den_val = n - k
else:
num_val = n - k + 1
den_val = k
i = n
#calculate n * (n - k) *....* (n-num_value))
while i != num_val - 1:
if i == 0:
result *= 1
else:
result *= i
if i == num_val:
num = result
i -=1
i = 0
result = 1
#calculate den_val! (factorial of denominator)
while i != den_val + 1:
if i == 0:
result *= 1
else:
result *= i
if i == den_val:
deno = result
i += 1
ans = num/deno
return ans
if __name__ == "__main__":
n = input("Enter n\n")
k = input("Enter k\n")
print(comb(n, k))
復雜度-O(max(k,n-k))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.