欢迎访问==> 【考研OR保研】机试题
题目描述
给定若干个可能很大的正整数,请你计算它们相加的和。
输入格式
最多不超过 $100$ 个正整数,每个数的长度不超过 $100$。
每个整数占一行。
最后输入一行一个 $0$,表示输入结束。
注意整数可能有前导 $0$。
输出格式
输出所有数的和。
输入样例:
123456789012345678901234567890
123456789012345678901234567890
123456789012345678901234567890
0
输出样例:
370370367037037036703703703670
C++ 代码
#include <bits/stdc++.h>
using namespace std;
//高精度加法(模板)
vector<int> add(vector<int> &A, vector<int> &B)
{
int t = 0;
vector<int> C;
for(int i = 0; i < A.size() || i < B.size(); i ++)
{
if(i < A.size()) 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 s;
vector<int> res(0);
while(cin >> s)
{
vector<int> t;
if(s == "0") break;
for(int i = s.size() - 1; i >= 0; i --) t.push_back(s[i] - '0');
res = add(res, t);
}
while(res.size() > 1 && res.back() == 0) res.pop_back();
for(int i = res.size() - 1; i >= 0; i --) cout << res[i];
return 0;
}