首页 > 代码库 > A + B Again

A + B Again

A + B Again

Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 16204 Accepted Submission(s): 6996


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
解题思路:#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);    }}

A + B Again