http://acm.nefu.edu.cn/problemShow.php?problem_id=1834
n+x==n^x+n&x<<1;(恒成立)
n-x==n^x(本题的条件)
推出x==x&n
x的二进制中所有的1的位置 n均为1
记录n中1的个数num
x的可能情况====2的n次方
#include <bits/stdc++.h>
using namespace std;
long long ipow(long long a,long long b){
int res=1;
while(b){
if(b&1)res=res*a;
a=a*a;
b>>=1;
}
return res;
}
int main()
{
long long n,num;
while(cin>>n){
num=0;
while(n){
if(n%2==1)num++;
n=n/2;
}
cout<<ipow(2,num)<<endl;
}
return 0;
}