Algorithm


B. Luntik and Subsequences
time limit per test
1 second
memory limit per test
256 megabytes
input
standard input
output
standard output

Luntik came out for a morning stroll and found an array a of length n. He calculated the sum s of the elements of the array (s=ni=1ai�=∑�=1���). Luntik calls a subsequence of the array a nearly full if the sum of the numbers in that subsequence is equal to s1�−1.

Luntik really wants to know the number of nearly full subsequences of the array a. But he needs to come home so he asks you to solve that problem!

A sequence x is a subsequence of a sequence y if x can be obtained from y by deletion of several (possibly, zero or all) elements.

Input

The first line contains a single integer t (1t10001≤�≤1000) — the number of test cases. The next 2t2⋅� lines contain descriptions of test cases. The description of each test case consists of two lines.

The first line of each test case contains a single integer n (1n601≤�≤60) — the length of the array.

The second line contains n integers a1,a2,,an�1,�2,…,�� (0ai1090≤��≤109) — the elements of the array a.

Output

For each test case print the number of nearly full subsequences of the array.

Example
input
Copy
5
5
1 2 3 4 5
2
1000 1000
2
1 0
5
3 0 2 1 1
5
2 1 0 3 0
output
Copy
1
0
2
4
4
Note

In the first test case, s=1+2+3+4+5=15�=1+2+3+4+5=15, only (2,3,4,5)(2,3,4,5) is a nearly full subsequence among all subsequences, the sum in it is equal to 2+3+4+5=14=1512+3+4+5=14=15−1.

In the second test case, there are no nearly full subsequences.

In the third test case, s=1+0=1�=1+0=1, the nearly full subsequences are (0)(0) and ()() (the sum of an empty subsequence is 00).

 



 

Code Examples

#1 Code Example with C++ Programming

Code - C++ Programming

#include<bits/stdc++.h>
using namespace std;


#define ll long long
#define endl '\n'
#define debug(n) cout<<(n)<<endl;
const ll INF = 2e18 + 99;

ll powd(ll a, ll b){
  if(b == 0){
    return 1;
  }
  for(ll i = 1; i < b; i++){
    a = a * 2;
  }
  return a;
}

int main(){
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);

  int t;
  cin>>t;
  while(t--){
    ll n;
    cin>>n;
    ll x = 0, y = 0, k;
    for(ll i = 0; i < n; i++){
      cin>>k;
      if(k == 1){
        x++;
        continue;
      }
      if(k == 0){
        y++;
        continue;
      }

    }
    cout<<(x * powd(2,y))<<endl;
  }

}
Copy The Code & Try With Live Editor

Input

x
+
cmd
5
5
1 2 3 4 5
2
1000 1000
2
1 0
5
3 0 2 1 1
5
2 1 0 3 0

Output

x
+
cmd
1
0
2
4
4
Advertisements

Demonstration


Codeforcess Solution 1582-B B. Luntik and Subsequences ,C++, Java, Js and Python ,1582-B,Codeforcess Solution

Previous
Codeforces solution 1080-B-B. Margarite and the best present codeforces solution
Next
CodeChef solution DETSCORE - Determine the Score CodeChef solution C,C+