+A -A +1A 12 1A -9 -1A -12 1A -AA
0 2C 11 -2C -90解题思路:#include<iomanip>http://blog.sina.com.cn/s/blog_65dd7e070100kmpt.html题目给定条件:The length of A and B is less than 15.也就说两个十六进制数转换为二进制,最多只有 15*4=60位,预算结果转换为二进制,最多只有 61 位,__int64 顾名思义,是用 64 位二进制表示一个整数,因此是不会超范围的。注意这64位中最高位是符号位(表示正负),实际可用的只有 63 位%I64X :输出【无符号】十六进制数, 用大写字母,也就是说 %I64X 的格式【无法输出负数的】,但运算结果是有负数的。一种简单的方法就是,把负数取绝对值,然后手工添加一个负号。程序代码:#include<iostream> #include<iomanip> using namespace std; int main() { __int64 a,b; while(scanf("%I64X%I64X",&a,&b)!=EOF) { __int64 sum =a + b; if(sum < 0) { sum =- sum; printf("-"); } printf("%I64X\n",sum); } }
原文地址:http://blog.csdn.net/zchlww/article/details/41620435