久闻大名的海盗分金问题
详见HDU 1538 A Puzzle for Pirates(经典的海盗分金推理)
#include<cstdio>
#include<cstdlib>
#include<algorithm>
#define read(x) scanf("%d",&(x))
using namespace std;
int fac[]={1,2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384,32768};
inline void Solve(int n,int m,int p){
if (2*m>=n){
if (n==p)
printf("%d\n",m-(n-1)/2);
else
printf("%d\n",n%2==p%2);
}else if (2*m+1==n){
printf("%d\n",p!=n && p&1);
}else{
int t=n-2*m;
for (int i=1;i;i++)
if (fac[i]>t){
if (p>2*m+fac[i-1])
printf("Thrown\n");
else
printf("0\n");
return;
}
}
}
int main(){
int T,n,m,p;
freopen("t.in","r",stdin);
freopen("t.out","w",stdout);
read(T);
while (T--)
read(n),read(m),read(p),Solve(n,m,p);
return 0;
}