Python程式:計算列表所有排列中所有特殊值的平均值


假設我們有一個元素列表,我們可以透過以下演算法計算 S 的值。

while size of L > 1 is non-zero, do
   a := L[0]
   b := L[1]
   remove L[1]
   L[0] := a + b + a*b
return L[0] mod (10^9 + 7)

在這裡,我們需要找到從 L 的所有可能組合計算出的所有 S 值的平均值。

因此,如果輸入類似於 L = [5,3,4],則輸出將為 199,因為對於 L 的所有排列,S 的值為 119,因此它們的平均值也是 119。

為了解決這個問題,我們將遵循以下步驟:

  • m := 10^9+7
  • li := L 中所有 x 的 x+1 組成的列表
  • prod := 1
  • 對於 li 中的每個 i,執行:
    • prod := prod * i
    • prod := prod mod m
  • 返回 (prod-1) mod m

示例

讓我們看看以下實現以更好地理解:

def solve(L):
    m = 10**9+7
    li = [x+1 for x in L]
    prod = 1
    for i in li:
        prod *= i
        prod %= m
    return (prod-1) % m

L = [5,3,4]
print(solve(L))

輸入

[5,3,4]

輸出

119

更新於: 2021年10月6日

93 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.