hdu 2057 十六进制的加减
这题可以直接用十六进制输入,然后进行十六进制的运算(其实不管是什么进制,在计算机中都是以二进制来计算的,只是按输入输出的格式不同,而强制转化为其它的进制),就像十进制的加法一样。
这里要注意的是输入小于15位,结果超过了二进制中的32位而小于64位。所以这里用__int64的类型。输入输入出格式就是(%I64x,%I64X)。由于%I64X,不能输出负数,所以负数的输出要做处理。
1 #include <stdio.h> 2 3 int main(){ 4 __int64 a,b; 5 int flag; 6 while(~scanf("%I64X%I64X",&a,&b)) //这里必须是大写的X 7 { 8 b+=a; 9 if(b<0) 10 { 11 b=-b; 12 flag=0; 13 } 14 else flag=1; 15 16 if(!flag) 17 putchar('-'); 18 printf("%I64X\n",b); 19 20 } 21 }