Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Chương trình tính tổng 2^tổng_tất_cả_subarray trong Python

Cho mảng A. Xét tất cả subarray không rỗng. Với mỗi subarray tính tổng S, rồi cộng 2^S. Tìm tổng P mod 1e9+7.

Công thức

P = ∏_{a∈A} (1 + 2^a) - 1 (mod 1e9+7).

Ví dụ

def solve(A):
    MOD = 10**9 + 7
    ans = 1
    for el in A:
        ans = ans * (1 + pow(2, el, MOD)) % MOD
    return (MOD + ans - 1) % MOD

print(solve([2, 2, 3]))  # Output: 224

Giải thích

A=[2,2,3]: subarray sums: 2,2,3,4,5,5,7 → 2^2+2^2+2^3+2^4+2^5+2^5+2^7 = 4+4+8+16+32+32+128 = 224.