【2057 A + B Again ?】

本文介绍了一个HDOJ上的A+B问题,该问题是通过直接处理十六进制数的加法来解决的,无需进行进制转换。文章提供了完整的代码实现,并解释了如何使用VC++中的_int64类型进行大整数的输入输出。

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

A + B Again

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


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<iostream>
#include<cstdio>
using namespace std;
int main(){
		_int64 a,b,sum;
		while(scanf("%I64X %I64X",&a,&b)!=EOF){
			 sum=a+b;
			if(sum<0){
				sum=-sum;
				printf("-");
			}
			printf("%I64X\n",sum);
		}		
}

这个十六进制可以直接加减的。所以无需转换的。
在VC++中  longlong 用_int64 表示。输入格式为

输出符 %I64x

[signed]        long long   [int]        64        -2^63 ~ 2^63-1             %I64d

unsigned      long long   [int]        64        0 ~ 2^64-1                    %I64u、%I64o、%I64x

 

所以直接输出的a+b 是两个正数的和。

至于是无符号,输入时间把符号位至1,按正数计算。至于sum=a+b。出现负数,是因为十六进制本身可以自动加减,只是在输出时间把符号位按正数处理了。

如果理解有误请指出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

paidream

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值