hdu2116
当a 和b异号的时候肯定不会溢出
当同号的时候只需注意下 k == 64时 max = 0x7fffffffffffffff(15个f)其他的max = ( 1 <<( k - 1 ) - 1 )
代码如下:
1 #include <stdio.h> 2 #include <stdlib.h> 3 4 int main() 5 { 6 __int64 max, a, b, k; 7 8 while( scanf( "%I64d", &k ) != EOF ) 9 { 10 scanf( "%I64d%I64d", &a, &b ); 11 max = 1; 12 if( k == 64 ) 13 { 14 max = 0x7fffffffffffffff; 15 } 16 else 17 { 18 max = ( max << ( k - 1 ) ) - 1; 19 } 20 21 if( ( a > 0 && b > 0 && max - a < b ) || ( a < 0 && b < 0 && - max - a > b + 1 ) ) 22 { 23 printf( "Yes\n" ); 24 } 25 else 26 { 27 printf( "WaHaHa\n" ); 28 } 29 } 30 return 0; 31 }