Computer >> Máy Tính >  >> Lập trình >> Python

Chương trình tìm tổng của tổng 2 lũy thừa của tất cả các tổng mảng con của một mảng nhất định bằng Python

Giả sử chúng ta có một danh sách A. Chúng ta đã lấy tất cả các danh sách con không rỗng của A khi chúng ta biết một danh sách l có n phần tử có (2n - 1) danh sách con khác rỗng. Bây giờ đối với mỗi danh sách con, anh ta tính toán sublist_sum (tổng các phần tử và ký hiệu chúng bằng S 1 , S 2 , S 3 , ..., S (2N-1) ). Có một tổng đặc biệt P sao cho P =2 S1 + 2 S2 +2 S3 .... + 2 S (2N-1) . Chúng ta phải tìm P. Nếu P quá lớn thì trả về P mod (10 ^ 9 + 7).

Vì vậy, nếu đầu vào là A =[2,2,3], thì đầu ra sẽ là Các tập con là

  • {2} nên 2 ^ 2 =4
  • {2} nên 2 ^ 2 =4
  • {3} nên 2 ^ 3 =8
  • {2,2} nên 2 ^ 4 =16
  • {2,3} nên 2 ^ 5 =32
  • {2,3} nên 2 ^ 5 =32
  • {2,2,3} nên 2 ^ 7 =128

Tổng là 4 + 4 + 8 + 16 + 32 + 32 + 128 =224

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • ans:=1
  • m:=10 ^ 9 + 7
  • đối với mỗi el trong A, thực hiện
    • ans:=ans * (1 + (2 ^ el mod m))
    • ans:=ans mod m
  • return (m + ans-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(A):
   ans=1
   m=10**9+7

   for el in A:
      ans *= (1+pow(2,el,m))
      ans %= m
   return (m+ans-1) % m


A = [2,2,3]
print(solve(A))

Đầu vào

[2,2,3]

Đầu ra

224