题目要求解$a-(aoplus x)-x=0$的解$x$的个数
移项得$a-x=aoplus x$
$a$的二进制形式,应该是一个$01$串,异或的过程是不能影响到两个不同的位的,所以我们按位考虑
如果这一位是$0$,那么$x$的这一位也应为$0$,使得异或后答案不会更大
如果这一位是$1$,那么$x$的这一位可以为$0$或$1$,对应到减法中就是没减和减掉
所以答案就是$2^{count~~1~~in~~a}$
#include<iostream> #include<cstdio> using namespace std; int t,a; int main() { scanf("%d",&t); while(t--) { scanf("%d",&a); int ans=1; while(a) { if(a%2) ans*=2; a/=2; } printf("%d ",ans); } return 0; }