大整数加法

题目描述

计算两个大整数的和。大整数是指超过了c,c++表示范围的整数,如1234567890000000000000000000

输入格式

输入包括两个大整数,每个大整数不超过100位,用空格或者换行隔开

输出格式

输出两个大整数的和

输入样例 复制

222222222222222222222
333333333333333333333

输出样例 复制

555555555555555555555

分类标签

高精度计算 

#include <stdio.h>

#include<string.h>

int main()

{

    char a[100+5],b[100+5];

    gets(a);

    gets(b);

    int A[105],B[105],C[105];

    int lenA=strlen(a),lenB=strlen(b),lenC=0;

    int carry=0,min,max;

    if(lenA>=lenB)min=lenB,max=lenA;

    else min=lenA,max=lenB;

    for(int i=0;i<lenA;i++)A[i]=a[lenA-1-i]-'0';

    for(int i=0;i<lenB;i++)B[i]=b[lenB-1-i]-'0';

    for(int i=0;i<min;i++){

        int temp=A[i]+B[i]+carry;

        C[lenC++]=temp%10;

        carry=temp/10;

        C[lenC]+=carry;

    }

    if(lenA>lenC){

        for(int i=lenC;i<lenA;i++){

            C[i]=(A[i]+carry)%10;

            carry=(A[i]+carry)/10;

        }

    }

    else{

        for(int i=lenC;i<lenB;i++){

            C[i]=(B[i]+carry)%10;

            carry=(B[i]+carry)/10;

        }

    }

    lenC=max;

    if(carry!=0)C[lenC++]=carry;

    for(int i=0;i<lenC;i++){

        printf("%d",C[lenC-1-i]);

    }

    return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值