这篇博客是从旧博客 WordPress 迁移过来,内容可能存在转换异常。
题目地址:
http://acm.hdu.edu.cn/showproblem.php?pid=2057
失败到了极点~~~做过一次,结果又忘了~~~ 亏自己还去写了个16进制转10进制以及10进制转16进制输出的函数。。。。 好吧,我太失败了!
// 失败,居然就几行代码....
#include
using namespace std;
int main()
{
__int64 a, b;
while(cin >> hex >> a >> b)
{
if(a+b < 0)
cout << "-" << uppercase << hex << -(a+b) << endl;
else
cout << uppercase << hex << (a+b) << endl;
}
return 0;
}
============================================================== cin >> hex >> a >> b; // 十六进制 cin >> dec >> a; //十进制
cin >> oct >>a; //八进制
%I64X %I64o %I64d %I64u分别表示十六进制,8进制,10进制,无符号位。注意x大写则输出时字母大写,x小写则输出时字母小写。
再把我写的丢出来: (汗,真不好意思贴出来的。。。一个简单的题居然写了那么多~~~)
// Author: Tanky Woo
// HDOJ 2057
// 好吧!
// 大数~~~失败!
#include
#include
#include
using namespace std;
__int64 hex2ten(char *a)
{
int len = strlen(a);
int flag = 1;
int i = 0;
if(a[0] == '-')
{
++i;
flag = 0;
}
else if(a[0] == '+')
++i;
__int64 sum = 0;
for(; i='0' && a[i]<='9')
sum += a[i]-'0';
else
sum += (a[i]-'A')+10;
}
if(flag)
return sum;
else
return -sum;
}
void ten2hex(__int64 num)
{
if(num<0)
{
num = -num;
printf("-");
}
int cnt = 0;
char _hex[16];
if(num == 0)
{
printf("0\n");
return;
}
while(num)
{
int temp = num%16;
if(temp>9)
_hex[cnt++] = 'A'+temp-10;
else
_hex[cnt++] = temp+'0';
num /= 16;
}
for(int i=cnt-1; i>=0; --i)
printf("%c", _hex[i]);
printf("\n");
}
char a[16], b[16];
int main()
{
while(scanf("%s %s", a, b) != EOF)
{
__int64 num1 = hex2ten(a);
__int64 num2 = hex2ten(b);
//printf("%d %d\n", num1, num2);
__int64 num = num1+num2;
ten2hex(num);
memset(a, 0, sizeof(a));
memset(b, 0, sizeof(b));
}
return 0;
}