题目要求:
对于输入的两个不超过100位数字的非负整数,给出两数之和。
输入格式:
在两行中分别给出两个不超过100位数字的非负整数
输出格式:
在一行中输出两数之和
输入样例:
123
12
输出样例:
135
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
就是一个标准的高精度加法模板,没什么特别的。
这里是用vector来写的,这样就省去了很多对数组长度的考虑,用数组写也是一样效果
唯一要留意的就是最后的一个进位不要忘了
#include <iostream>
#include <vector>
using namespace std;
vector<int> add(vector<int> &A, vector<int> &B)
{
if (A.size() < B.size()) return add(B, A);//因为后面循环条件是看A长度的,所以把长的放左边
vector<int> C;
int t = 0;
for (int i = 0; i < A.size(); i ++ )
{
t += A[i];
if (i < B.size()) t += B[i];
C.push_back(t % 10);
t /= 10;
}
if (t) C.push_back(t);
return C;
}
int main()
{
string a,b;
vector<int> A,B;
cin>>a>>b;
for(int i=a.size()-1;i>=0;i--)A.push_back(a[i]-'0'); //把ASCLL码转成整型数字
for(int i=b.size()-1;i>=0;i--)B.push_back(b[i]-'0');
auto C=add(A,B); //auto可以用vector<int>代替,一个意思
for(int i=C.size()-1;i>=0;i--)cout<<C[i];
return 0;
}
NEUQ-ACM预备队 week1--模拟与高精度专题T2-- 7-2 高精度加法
作者:电信2201 ycy