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)

ในที่นี้เราจะต้องหาค่าเฉลี่ยของค่า 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