首页 > 其他 > 详细

hdu 2057 %X 为负数时的解决方案

时间:2014-08-01 16:08:21      阅读:337      评论:0      收藏:0      [点我收藏+]

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 为负数时的解决方案,布布扣,bubuko.com

hdu 2057 %X 为负数时的解决方案

原文:http://blog.csdn.net/u013532224/article/details/38336371

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!