当k==64的时候,会超__int64的范围,单独处理就行了
__int64 是有符号的64位。。。
#include<stdio.h>
__int64 Pow(int n)
{
__int64 s=1;
int i;
for(i=1;i<=n;i++)
s*=2;
return s;
}
int main()
{
int n,f;
__int64 t,a,b,min,max;
while(scanf("%d",&n)!=EOF)
{
scanf("%I64d %I64d",&a,&b);
max=Pow(n-1);
min=-max;
max--;
if(n==64){
f=0;
if(a<0 && b<0){
t=min-a;
if(t>b) f=1;
}
else if(a>0 && b>0){
t=max-a;
if(b>t) f=1;
}
if(f) printf("Yes\n");
else printf("WaHaHa\n");
continue;
}
if((a+b)>max || (a+b)<min) printf("Yes\n");
else printf("WaHaHa\n");
}
return 0;
}