Giả sử chúng ta có một danh sách các phần tử, chúng ta có thể tính giá trị của S bằng thuật toán sau.
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)
Ở đây, chúng ta sẽ phải tìm giá trị trung bình của tất cả các giá trị S được tính toán từ tất cả các kết hợp có thể có của L.
Vì vậy, nếu đầu vào giống như L =[5,3,4], thì đầu ra sẽ là 199, bởi vì với mọi hoán vị của L, giá trị của S là 119, vì vậy trung bình của chúng cũng là 119.
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
- m:=10 ^ 9 + 7
- li:=danh sách x + 1 cho tất cả x trong L
- prod:=1
- đối với mỗi tôi trong li, hãy thực hiện
- prod:=prod * i
- prod:=prod mod m
- return (prod-1) mod m
Ví dụ
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
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))
Đầu vào
[5,3,4]
Đầu ra
119