在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+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