สมมติว่าเรามีรายการองค์ประกอบที่เราสามารถคำนวณค่าของ 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)
ในที่นี้เราจะต้องหาค่าเฉลี่ยของค่า S ทั้งหมดที่คำนวณจากผลรวมของ L ที่เป็นไปได้ทั้งหมด
ดังนั้น หากอินพุตเป็นเหมือน L =[5,3,4] เอาต์พุตจะเป็น 199 เพราะสำหรับการเรียงสับเปลี่ยนของ L ทั้งหมด ค่าของ S คือ 119 ดังนั้นค่าเฉลี่ยของมันคือ 119 ด้วย
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- ม :=10^9+7
- li:=รายการ x+1 สำหรับ x ทั้งหมดใน L
- ผลผลิต :=1
- สำหรับแต่ละ i ใน li ทำ
- 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