参考博客:
https://blog.csdn.net/whyorwhnt/article/details/22320389
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll a[20];
int get_bit(ll k){
int cnt=0;
while(k){
if(k&1){
cnt++;
}
k>>=1;
}
return cnt;
}
ll ans;
int n;
void dfs(int q,ll t,ll f){
ans+=(1ll<<get_bit(t))*f;
for(int i=q+1;i<n;i++){
dfs(i,t&a[i],-2*f);
}
}
int main(){
int T;
scanf("%d",&T);
for(int i=1;i<=T;i++){
scanf("%d",&n);
for(int j=0;j<n;j++){
scanf("%lld",&a[j]);
}
ans=0;
for(int j=0;j<n;j++){
dfs(j,a[j],1);
}
printf("Case #%d: %lld\n",i,ans);
}
return 0;
}