A + B Again
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 14981 Accepted Submission(s): 6527
Problem Description
There must be many A + B problems in our HDOJ , now a new one is coming.
Give you two hexadecimal integers , your task is to calculate the sum of them,and print it in hexadecimal too.
Easy ? AC it !
Input
The input contains several test cases, please process to the end of the file.
Each case consists of two hexadecimal integers A and B in a line seperated by a blank.
The length of A and B is less than 15.
Output
For each test case,print the sum of A and B in hexadecimal in one line.
Sample Input
+A -A +1A 12 1A -9 -1A -12 1A -AA
Sample Output
0 2C 11 -2C -90
哈哈... 感觉挺水的 但是挺好玩的... 不知道为什么%X 或者%I64X 为负数的时候 不能直接输出必须要 变成正数再输出...
下面是自己感觉说得过去的理由....
1A -AA
不变负数 答案是 FFFFFF70
变负数后 答案是90 再手动加个符号 -90
上面这个案例, 1A=26 -AA=-170 ans= -144
144 二进制是 1001 0000 取反后 二进制是1111 1111 1111 1111 1111 1111 0110 1111 再加1 二进制是 1111 1111 1111 1111 1111 1111 0111 0000
可能是因为%X没%d机智吧,, 他是老老实实 按十六进制输出的 所以是 FFFFFF70.
所以呢 ,对不够机智的%X家族 要加上个符号. 至少对c是这样的.
#include<stdio.h> #include<math.h> int main() { __int64 a,b,c; while(scanf("%I64X %I64X ",&a,&b)!=EOF) { c=a+b; if(c>=0) printf("%I64X\n",c); else printf("-%I64X\n",-c); } return 0; }
hdu 2057 %X 为负数时的解决方案