Python
 Computer >> コンピューター >  >> プログラミング >> Python

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
  • return(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

  1. 指定された文字列のすべての順列を出力するPythonプログラム

    この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −文字列の可能なすべての順列を表示するために必要な文字列が与えられます。 次に、以下の実装のソリューションを見てみましょう- 例 # conversion def toString(List):    return ''.join(List) # permutations def permute(a, l, r):    if l == r:       print (toString(a))    e

  2. Pythonでリストのすべての順列を生成するにはどうすればよいですか?

    itertoolsパッケージの順列メソッドを使用して、Pythonでリストのすべての順列を検索できます。次のように使用できます- 例 import itertools perms = list(itertools.permutations([1, 2, 3])) print(perms) 出力 これにより、出力が得られます- [(1, 2, 3), (1, 3, 2), (2, 1, 3), (2, 3, 1), (3, 1, 2), (3, 2, 1)]