HDOJ 1002 大数加法

纯粹考操作。

我用到了<algorithm>中的reverse函数。

#include <iostream>
#include <algorithm>
using namespace std;

const int LEN = 1005;
char a[LEN],b[LEN],sum[LEN];

void Init()
{
    for (int i = 0;i < LEN;i ++)
        a[i] = b[i] = sum[i] = 0;
}

void getSum()
{
    int len = max(strlen(a),strlen(b));
    int i;
    for (i = 0;i < len;i ++)
    {
        if (a[i] != 0 && b[i] != 0)
            sum[i] = a[i] + b[i] - '0';
        else if (a[i] != 0)
            sum[i] = a[i];
        else
            sum[i] = b[i];
    }
    for (i = 0;i < len;i ++)
    {
        if (sum[i] > '9')
        {
            if (i == (len - 1))
                sum[i + 1] = (sum[i] - '0') / 10 + '0';
            else
                sum[i + 1] += (sum[i] - '0') / 10;
            sum[i] = (sum[i] - '0') % 10 + '0';
        }
    }
}

int main ()
{
    int caseNum;
    scanf("%d",&caseNum);
    for (int i = 1;i <= caseNum;i ++)
    {
        Init();
        scanf("%s%s",a,b);
        printf("Case %d:\n",i);
        printf("%s + %s = ",a,b);
        reverse(a,a + strlen(a));
        reverse(b,b + strlen(b));
        getSum();
        reverse(sum,sum + strlen(sum));
        printf("%s\n",sum);
        if (i != caseNum)
            printf("\n");
    }
    return 0;
}
posted @ 2012-08-17 20:17  peaceful  阅读(123)  评论(0)    收藏  举报