다음 알고리즘으로 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의 목록
- 생산량:=1
- li의 각 i에 대해 do
- prod :=prod * i
- prod :=prod mod m
- 반환(prod-1) 모드 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