一开始以为是思维题,想了很久…后来发现是一道规律题。
当m不为1时,0-2m-1的所有数异或起来答案是0.
如果n为0,则答案就是所有数的个数。
否则就是所有数个数-1.
当m为1时有特例:当n为1时,个数为2(0、1),当n为0时,个数为1(0).
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define fir(i,a,n) for(int i=a;i<=n;i++)
const int N=1e5+10;
int n;
int main()
{
cin>>n;
while(n--)
{
ll a,b;cin>>a>>b;
//a是范围 b是目标
if(a==1)
{
if(b==1) cout<<2<<endl;
else cout<<1<<endl;
}
else
{
if(b) cout<<(ll)pow(2,a)-1<<endl;
else cout<<(ll)pow(2,a)<<endl;
}
}
return 0;
}