在Python中查找给定数组的所有子数组总和的2次幂总和的程序
假设我们有一个列表A。我们已经获取了A的所有非空子列表,因为我们知道具有n个元素的列表l具有(2n-1)个非空子列表。现在对于每个子列表,他计算sublist_sum(元素的总和并用S1,S2,S3,...,S(2N-1)表示)。有一个特殊和P使得P=2S1+2S2+2S3....+2S(2N-1)。我们必须找到P。如果P太大,则返回Pmod(10^9+7)。
所以,如果输入像A=[2,2,3],那么输出将是
{2}所以2^2=4
{2}所以2^2=4
{3}所以2^3=8
{2,2}所以2^4=16
{2,3}所以2^5=32
{2,3}所以2^5=32
{2,2,3}所以2^7=128
总和是4+4+8+16+32+32+128=224
示例
让我们看看以下实现以获得更好的理解-
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))
输入
[2,2,3]输出结果
224