大整数加法

ICPC--1151: 大整数加法

题目描述

比利经常会碰到超大整数的加法运算,而普通的计算器上无法进行。因此他想你帮他写一个程序来计算结果。

输入

输入数据有多组。首先输入一个整数T,表示有T组输入。

每组输入两个大整数,并用空格隔开。每个整数最多1000位。没有负数输入。

输出

对于每组输入,输出两个整数的和,单独占一行。

样例输入

2
1 2
112233445566778899 998877665544332211

样例输出

3
1111111111111111110

代码

#include
#include
int main()
{
    char str1[1000], str2[1000];
    int strs1[1000], strs2[1000], strs[1000], b1, b2, i, n = 0, t;
    scanf_s("%d", &t);
    while (t--)
    {
        n = 0;//用来计算大于10时进一
        memset(strs1, 0, sizeof(strs1));//初始化 
        memset(strs2, 0, sizeof(strs2));
        memset(strs, 0, sizeof(strs));
        scanf_s("%s%s", str1, str2);
        b1 = strlen(str1);//字符串长度 
        b2 = strlen(str2);
        if (b1 > b2)
        {
            n = b1 - b2;
            for (i = 0; i < b1; i++)
            {
                strs1[i] = str1[i] - '0';
                if (i < b2)//在str2长度范围内
                {
                    strs2[i + n] = str2[i] - '0';//挪位 相当于补0 
                }
            }
        }
        else
        {
            n = b2 - b1;
            for (i = 0; i < b2; i++)
            {
                strs2[i] = str2[i] - '0';
                if (i < b1)
                {
                    strs1[i + n] = str1[i] - '0';
                }
            }
        }
        if (b1 < b2)//交换,使b1>b2 
        {
            n = b1;
            b1 = b2;
            b2 = n;
        }
        n = 0;//归零
        for (i = b1 - 1; i >= 0; i--)
        {
            strs[i] = strs1[i] + strs2[i] + n;
            n = 0;
            if (i > 0)
            {
                if (strs[i] >= 10)
                {
                    strs[i] = strs[i] % 10;//求余
                    n = 1;//进1 
                }
            }
        }
        for (i = 0; i < b1; i++)
            printf("%d", strs[i]);
        printf("
");
    }
    return 0;
}

ICPC--1152: 二分搜索

发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章