题目:http://codeforces.com/contest/1064/problem/B
题意:输出满足 a⊕x==a−x 的x的个数
思路:规律(粗看还是显然的) a⊕x>=a−x 恒成立,等式成立的条件,a的二进制表示中1的位置处,x在对应位置处可为1或0,其他地方都为0。即求a为1的位置处的子集,即 个x。
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,a;
cin>>n;
while(n--)
{
scanf("%d",&a);
int ans=1;
while(a)
{
if(a&1) ans<<=1;
a>>=1;
}
printf("%d\n",ans);
}
return 0;
}