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

本文深入解析了一个看似简单的HDOJ A+B问题,不仅提供了解题思路,还探讨了负数转换为正数进行输出的有趣技巧,并通过详细示例解释了这一过程背后的原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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;
}






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值