1260: 【基础】【P1601】高精度加法

内存限制:16 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:99 解决:33

题目描述

计算a+b的值,a,b皆为不超过500位的正整数。

输入

两个正整数,每行一个

输出

一个数,代表两个整数的和

样例输入 复制

111111111111111111111111111111111111
222222222222222222222222222222222222

样例输出 复制

333333333333333333333333333333333333

提示


#include<bits/stdc++.h>
using namespace std;
#define maxn 520
int a[maxn],b[maxn],c[maxn];
int main(){
    string A,B;
    cin>>A>>B;
    int lena,lenb,len;
    lena=A.length();
    lenb=B.length();
    len=max(lena,lenb);
    for (int i=A.length()-1;i>=0;i--)
        a[lena-i]=A[i]-'0';
    for (int i=B.length()-1;i>=0;i--)
        b[lenb-i]=B[i]-'0';
	for (int i=1;i<=len;i++) {
		c[i]+=a[i]+b[i];
		c[i+1]=c[i]/10; //模拟进位
		c[i]=c[i]%10;
	}
	if (c[len+1]>0) len++; //最后进位可能会导致位数增加
	for (int i=len;i>=1;i--)
	    cout<<c[i];     
	return 0;
}