NOJ1011大数加法

大数加法

原理是字符串,设置好进位规则,不复杂
#include
#include
#include
int main()
{
    char ags[1001] = { 0 }, bgm[1001] = { 0 }, at4[1002] = { 0 };
    int i, j, k;
    //for (i = 0; i < 1000; i++)
       // ags[i] = bgm[i] = 0;
    scanf("%s %s", ags, bgm);
    i = strlen(ags);
    j = strlen(bgm);
    int aisb = i > j ? i : j;
    for (k=1001; 1001-k<=aisb  ;k--)
    {
        if (at4[k] == 0)
        {
            if (i >= 0)
                at4[k] += ags[i--];
            if (j >= 0)
                at4[k] += bgm[j--];
            if (at4[k]>'9')
                at4[k] -= 48;
        }
        else
        {
            if (i >= 0)
                at4[k] += ags[i--]-48;
            if (j >= 0)
                at4[k] += bgm[j--] - 48;
        }

        if (at4[k] > '9')
        {
            at4[k] -= 10;
            if (k == 0)
                exit(123456789);
            else if (at4[k - 1] == 0)
                at4[k - 1] += 49;
            else
                at4[k - 1]++;
        }
    }

    for (; k < 1002; k++)
        if (at4[k] == 0)
            continue;
        else
        printf("%c", at4[k]);
    return 0;
}

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注