//hdoj 2057
十六进制输入输出:%x
刚开始自己傻逼地用字符串来做转换TAT
learn from others:
由于题目所说的16进制数长度小于15位,所以换算成2进制位的话小于64(16*4)位,需用长整形。
long long 和_int64输出16进制数时,不能输出负数,若是负数必须转换一下。
实测:负数输出的是补码-1 0
ffffffffffffffff
-1 -1
fffffffffffffffe
-2 -2
fffffffffffffffc
#include<stdio.h>
int main()
{
__int64 a,b,sum; //__int64是两个短的下划线!!
while(scanf("%I64x%I64x",&a,&b)!=EOF)
{
sum=a+b;
if(sum>=0)
printf("%I64X\n",sum); //X输出大写 x输出小写
else
printf("-%I64X\n",-sum);
}
return 0;
}
#include<stdio.h>
int main(void)
{
long long a, b, result; //long long 可以通过cin cout
while(scanf("%llx %llx", &a, &b) != EOF) {
result = a + b;
if (result >= 0)
printf("%llX\n", result); //X输出大写 x输出小写
else
printf("-%llX\n", -result);
}
return 0;
}