首页 > 代码库 > 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 !
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.
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
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。