Blog·Tanky WooABOUTRSS

HDOJ 2057 A + B Again

29 Jul 2010
这篇博客是从旧博客 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;
}