链接:登录—专业IT笔试面试备考平台_牛客网
来源:牛客网
题目描述
输入两个正整数A和B,计算A+B。
输入描述:
第一行输入两个整数A和B
0≤A,B≤101000000 \le A,B \le 10^{100000}0≤A,B≤10100000
输出描述:
输出一行,表示A+B
输入:
01 00002
输出:
3
答案:
#include<bits/stdc++.h>
using namespace std;
const int N = 1e5 + 10;
int a[N],b[N],c[N];
string s1,s2;
int main()
{
cin >> s1 >> s2;
int la = s1.length();
int lb = s2.length();//计算长度
for (int i = 0;i < la;i++)
{
a[la - i] = s1[i] - '0';
}
for (int i = 0;i < lb;i++)
{
b[lb - i] = s2[i] - '0';
}//将s1和s2存入数组倒叙存储
int lc = max(la,lb) + 1;//加一来防止加法进位
for (int i = 1;i <= lc;i++)
{
c[i] += (a[i] + b[i]);
c[i + 1] = c[i] / 10;
c[i] = c[i] % 10;
}//大于⑩的数取整累加到下一位
while(c[lc] == 0 && lc > 0) lc --;//排除前道零
for (int i = lc;i > 0;i --) cout << c[i];
return 0;
}
运用了字符串和数组的解法 原理是按位相加最后在输出时将前道0去除。