Pagini recente » Cod sursa (job #2525787) | Cod sursa (job #101676) | Cod sursa (job #1316295) | Cod sursa (job #531265) | Cod sursa (job #2540635)
#include<bits/stdc++.h>
using namespace std;
const int N=1e6+5;
const int mod=1e9+7;
const int MX=(1<<20);
int c[2*N];
int tv[N];
int main()
{
tv[0]=1;
for(int i=1;i<N;i++)
tv[i]=(2*tv[i-1])%mod;
//tv[0]=0;
int n;
cin >> n;
int x;
for(int i=1;i<=n;i++)
{
scanf("%d",&x);
c[x]++;
}
for(int k=1;k<MX;k*=2)
for(int i=0;i<N;i++)
if((i&k)==0)
c[i]+=c[i+k];
int ans=0;
for(int i=0;i<MX;i++)
{
ans=(ans+(__builtin_popcount(i)%2==1?-1:1)*tv[c[i]]);
ans+=mod*(ans<0);
ans%=mod;
//cout<<i<<" : "<<c[i]<<" "<<tv[c[i]]<<endl;
}
cout<<ans;
return 0;
}