问题 G: 2027 模拟测试2(大整数求和)

题目描述

求两个不超过200 位的非负整数的和。

输入

有多组样例,每组样例有两行,每行是一个不超过200位的非负整数,没有多余的前导0。

输出

一行,即相加后的结果。结果里不能有多余的前导0,即如果结果是342,那么就不能输出为0342。

样例输入 复制

22222222222222222222
33333333333333333333

样例输出 复制

55555555555555555555
#include 
#include 
 
int main() {
    char num1[205], num2[205], res[205];
    int x,y,sum;
    while (scanf("%s%s", num1, num2) != EOF) {
        int len1 = strlen(num1), len2 = strlen(num2);
        int carry = 0, k = 0;
        for (int i = len1 - 1, j = len2 - 1; i >= 0 || j >= 0; i--, j--) {
             x = i >= 0 ? num1[i] - '0' : 0;
             y = j >= 0 ? num2[j] - '0' : 0;
             sum = x + y + carry;
            res[k++] = sum % 10 + '0';
            carry = sum / 10;
        }
        if (carry > 0) {
            res[k++] = carry + '0';
        }
        while (k > 1 && res[k - 1] == '0') {
            k--;
        }
        for (int i = k - 1; i >= 0; i--) {
            printf("%c", res[i]);
        }
        printf("\n");
    }
    return 0;
}

备用python和java程序 节省时间 

 

你可能感兴趣的:(算法零基础,算法)