题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2057

问题描述

  我们的HDOJ必须有许多A + B问题,现在又有新的问题出现。 给你两个十六进制整数,你的任务是计算它们的总和,并以十六进制打印它。 简单 ? AC它!

输入

   输入包含多个测试用例,请处理至文件末尾。 每个情况由两个十六进制整数A和B组成,并由一个空格分隔。 A和B的长度小于15。

输出

  对于每个测试用例,在一行中以十六进制格式打印A和B的总和。

示例输入

+ A   -A

+ 1A  12

1A  -9

-1A   -12

1A  -AA

示例输出

0

2C

11

-2C

-90

解题思路:这是一道关于16进制加法。刚开始想用模拟大数那样的方法来先转化成10进制,再转化成16进制输出,但想到有%X这个输出格式控制符,于是就换了种写法。经过对%X的查阅了解,解决这题可以用%I64X(这里的'X'是大写),也可以用long long来处理,要注意到16进制中负数是用补码来表示的,计算机会自己处理16进制加法的,所以不必采用模拟法。因为长度是小于15(即15位),在long long (__int64)(即19位)数据的范围内,所以直接使用它们,但要注意的是如果计算结果是负数的话,由于%I64X 输出格式是输出一个unsigned long long int,无符号64位正整数,前面加负号让其转换成有符号的64位,并输出单独加个'-'(负号)。下面给出这两种写法:

AC代码:

写法一:

 #include <bits/stdc++.h>
using namespace std;
int main()
{
__int64 A,B;
while(~scanf("%I64X %I64X",&A,&B)){
if(A+B<)printf("-%I64X\n",-(A+B));
else printf("%I64X\n",(A+B));
}
return ;
}

写法二:(注意输出格式是大写的'X')

 #include <bits/stdc++.h>
using namespace std;
int main()
{
long long A,B;
while(~scanf("%llX %llX",&A,&B)){
if(A+B<)printf("-%llX\n",-(A+B));
else printf("%llX\n",(A+B));
}
return ;
}

最新文章

  1. qml中打开本地html
  2. 转 XenServer、XenCenter安装测试
  3. input放在a标签里面不能选择input里面的文本,IE9点击失效
  4. 每天一道LeetCode--58. Length of Last Word
  5. git merge 到 非当前 branch
  6. quartz Cron表达式一分钟教程
  7. C#中的try catch finally
  8. codevs 1282 约瑟夫问题(线段树)
  9. c-函数指针(求奇数偶数的和)
  10. jquery val() and text().
  11. 上传python包到PyPI
  12. BZOJ 1632: [Usaco2007 Feb]Lilypad Pond
  13. 壮美大山包-2017中国大山包国际超百公里ITRA积分赛赛记
  14. 全球(局)唯一标识符GUID的使用
  15. jquery.uploadify上传插件HTML5版中文api使用说明
  16. Shell and DOS
  17. js正则、js全选、反选、全不选、ajax批删
  18. mysqli返回受影响行数
  19. Matlab的linprog解决简单线性规划问题
  20. Cracking the coding interview--Q2.5

热门文章

  1. HTC 328T 提示手机存储不足 out of space怎么办
  2. 微信小程序实战之 goods(订餐页)
  3. 【Java集合源代码剖析】HashMap源代码剖析
  4. C语言 字符串操作 笔记
  5. poj1840Eqs(哈希判重)
  6. LruCache &amp; DiskLruCache
  7. oracle 10g的备份和还原
  8. Win7下安装iMac系统
  9. 转:目前为止最全的微信小程序项目实例
  10. mysql08---优化01