大整数加法

描述

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

输入

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

输出

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

样例输入

22222222222222222222
33333333333333333333

样例输出

55555555555555555555

#include <stdio.h>
#include <string.h>
#define Int(ch) ((ch) - '0')

int main(void)
{
    char a[200];
    char b[200];
    int result[201];
    gets(a);
    gets(b);
    
    int i = strlen(a) - 1;
    int j = strlen(b) - 1;
    
    int t = 0;
    int cnt = 0;
    while (i>=0 && j>=0){
        t = Int(a[i--]) + Int(b[j--]) + t;
        result[cnt++] = t % 10;
        t = t / 10;
    }
    while (i >= 0){
        t = Int(a[i--]) + t;
        result[cnt++] = t % 10;
        t = t / 10;
    }
    while (j >= 0){
        t = Int(b[j--]) + t;
        result[cnt++] = t % 10;
        t = t / 10;
    }
    if (t == 1){
        result[cnt++] = 1;
    }
    
    int flag = 0;
    for (i=cnt-1; i>=0; i--){
        if (result[i] != 0){  // 去除前导零
            flag = 1;
        }
        if (flag == 1){
            printf("%d", result[i]);
        }
    }
    if (flag == 0){  // 结果为零
        printf("0");
    }
    
    return 0;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 问题描述 求两个不超过 200 位的非负整数的和。 输入 有两行,每行是一个不超过 200 位的非负整数,没有多余...
    指尖极光阅读 4,322评论 0 0
  • 刚入门编程语言的同学可能对大整数加法合乘法有点小头疼。在这里就给大家分享下。希望对大家有所帮助。下面进入正题 De...
    harvey_dong阅读 5,897评论 0 1
  • 以字符串的形式给出两个非负整数 num1 和 num2,返回 num1 和 num2 的和。注意事项:num1 和...
    和蔼的zhxing阅读 3,567评论 0 0
  • 5同符号加法溢出 3. 考虑负数的存在。 关键是想好怎么设计一个出Bigint结构体。 具体实现:
    yangqi916阅读 3,247评论 0 0
  • 发现了个不大不小的坑,故事在开头时,说迪伦她在死后所行走的世界,是她自己的心中所想。后来当她回头像去找摆渡人崔斯坦...
    非衣雨山阅读 2,454评论 0 0

友情链接更多精彩内容