In this Leetcode Poisonous gas problem solution, you are on a battlefield and your enemy has an army of N soldiers. Each soldier has a strength denoted by an array A. Your enemy will select some soldiers such that the total strength of selected soldiers is maximum. You have a poisonous gas and you can use it on the selected soldiers as many times as you want. If the total strength is even, the poisonous gas will decrease the total strength of the selected soldiers to half of the total strength, otherwise, it will not affect them. Your task is to tell if it's possible to reduce the total strength to 1 or not.


HackerEarth Poisonous gas problem solution


HackerEarth Poisonous gas problem solution.

for _ in xrange(input()):
    n=input()
    a=map(int,raw_input().split())
    s=sum(x for x in a if x>0)
    print "No" if s&s-1 or s==0 else "Yes"

Second solution

#include<bits/stdc++.h>
     
    using namespace std;
     
    int main() {
        int t;
        cin>>t;
        while(t--) {
            int n; cin>>n;
            long long sum=0;
            int flag=0;
            for(int i=0;i<n;i++) {
                long long x; cin>>x;
                if(x>0) {
                    flag=1; sum+=x;
                }
            }
            long long val=(sum&(sum-1LL));
            if(flag && !val) cout<<"Yes\n";
            else cout<<"No\n";
        }
        
        return 0;
    }