簡體   English   中英

Python代碼用於將大數的相鄰數字相乘並找到最大可能乘積,而不給出期望的結果

[英]Python code for multiplying adjacent digits of a big number and finding maximum possible product, not giving desired result

這是一個Python代碼,用於查找可以從一個數字的13個相鄰數字獲得的最大乘積。 沒有錯誤信息,但是該程序沒有提供所需的輸出。 我每次都得到(repl.it) 1 ,盡管很明顯答案不是1 我是編程新手。

我的嘗試

我已經將數字轉換為字符串,並將其存儲到數組中以逐元素獲取。 遍歷所有數字的外部for循環(最后一次當i值是len(n)-12i+j將到達數組的最后一個條目。(盡管數組以相反的順序存儲數字,但我沒有t可以將其逆轉,因為我們不需要這樣做。

n = "123899778978978787888787778788767677667"
arr = []
for i in range(len(n)):
  arr.append(int(n)%10)
  n = str(int(n)//10)

mul = 1
max_mult = 1
for i in range(len(n)-12):
  for j in range(13):
    mul = mul * int(arr[i+j]) 

  if(max_mult<mul):
    max_mult = mul
print(max_mult)

誰能告訴我我要去哪里錯了? 任何幫助將不勝感激。

您可以使用zip簡化您的邏輯:

n_list = list(map(int, list(n)))
res = max(i * j for i, j in zip(n_list, n_list[1:]))  # 81

如果您堅持使用for循環:

n_list = list(map(int, list(n)))
max_mult = 0

for i, j in zip(n_list, n_list[1:]):
    mult = i * j
    if mult > max_mult:
        max_mult = mult

print(max_mult)  # 81

請注意,您可以修改現有的基於range的迭代,但這不被視為Pythonic:

for i in range(len(n_list) - 1):
    mult = n_list[i] * n_list[i+1]
    if mult > max_mult:
        max_mult = mult

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM