这个 前天比赛的时候,党和BTW都WA了好多次。。。 出错点在没考虑,LLONG_MIN 的负数是LLONG_MAX+1,超过了LLONG_MAX的范围,所以这里要用无符号数,特殊处理下就OK。 膜拜watashi大牛。。。 #include <stdio.h> #include <stdlib.h> #include <iostream> #include <string.h> #include <limits.h> using namespace std; long long int change( int base,int *num ) { } int main(void) { char sign[10], num[70]; int base; long long n; while( scanf("%s%d%s",sign,&base,num) != EOF ) { n = strtoll( num , NULL , base ); if( sign[0] == '~' ) printf("%lld/n",~n); else if( sign[0] == '!' ) printf("%d/n",!n); else if( n == LLONG_MIN ) printf("%llu/n",(long long unsigned)n); else printf("%lld/n",-n); } return 0; }