给一个数组 \(a_1, a_2, \cdots, a_n\) ,定义 \(s = \sum_{i = 1}^{n} a_i\) 。
询问有多少个 \(a\) 的子序列满足 \(\sum a_{i_k} = s - 1\) 。
显然要选出一个 \(1\) 不加入子序列,任意一个 \(0\) 可以加入或不加入子序列。
于是 \(ans = \binom{cnt1}{1} \cdot 2^{cnt0}\) 。
#include <bits/stdc++.h>
void solve() {
int n; std::cin >> n;
int cnt1 = 0, cnt0 = 0;
for (int i = 1, x; i <= n; i++) {
std::cin >> x;
cnt1 += (x == 1);
cnt0 += (x == 0);
}
std::cout << 1LL * cnt1 * (1LL << cnt0) << "\n";
}
signed main() {
int _ = 1; std::cin >> _;
while (_--) solve();
return 0;
}