hdu 2057 A + B again

题解:

  乍一看以为是个模拟题,但是仔细看了一下题意,才发现最大数字是15位,没有超过 __int64 能表达的最大数。__int64 最大能表示16位十六进制数。所以直接进行加减就行了,需要注意的是输入输出的格式以及十六进制表达负数的时候显示的是补码。

代码如下:

#include <stdio.h>

int main()
{
	__int64 n, m, tmp;
	while (scanf("%I64X %I64X", &n, &m) != EOF)
	{
		tmp = m + n;
		if (tmp >= 0)
			printf("%I64X\n", tmp);
		else
			printf("-%I64X\n", -tmp);
	}
	return 0;
}


 

posted on 2013-01-23 09:22  zm001  阅读(127)  评论(0编辑  收藏  举报