题目链接:13 .Large sum
题意:
给100个长度为50的数字,求数字之和的前10位
解题思路:
也就是大数相加,使用数组进行模拟即可
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int main() {
string s, t;
int n;
int a[100];
memset(a, 0, sizeof(a));
cin >> n; // 数的个数
cin >> s; // 数的长度
int k = s.size();
reverse(s.begin(), s.end());
for(int i = 0; i < k; i++) {
a[i] = s[i] - '0';
}
for(int i = 0; i < n-1; i++) {
cin >> t;
reverse(t.begin(), t.end());
int u = t.size();
u = max(u, k); // 数的最大长度
for(int i = 0; i < u; i++) {
a[i] += t[i] - '0';
}
}
for(int i = 0; i < k; i++) {
a[i+1] += a[i] / 10; // 进位
a[i] = a[i] % 10; // 余位
}
while(a[k] != 0) { // 进位的数
a[k+1] += a[k] / 10;
a[k] = a[k] % 10;
k++;
}
cout << k << endl;
for(int i = k-1; i >= 0; i--) {
cout << a[i];
}
return 0;
}