点这里 |
---|
题意: T组数据,每组数据都有多个不超过一百位的长整数,每组数据以0结尾,输出所有长整数求和结果,没两组输出之间要空行。
题解: 一开始想到了string
的反转函数,写了一下是比较简单的,但是TLE了。无奈回归到数组来做,每个整数输入之后要翻转过来求和,最后再反转过来输出。一些细节没处理好,废了点时间。
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
int N;
const int maxn = 1e3 + 10;
void run(){
char str[maxn];
int a[maxn] = {0};
while(scanf("%s", str)){
if(str[0] == '0') break;
int len = strlen(str);
for(int i = len - 1, k = 0; i >= 0; --i, ++k){
a[k] += str[i] - '0';
int j = k;
while(a[j] > 9){
a[j] = a[j] - 10;
a[++j]++;
}
}
}
int len = maxn - 1;
while(!a[len--]) if(len < 0) break;
for(len++; len >= 0; --len){
printf("%d", a[len]);
}
printf("\n");
if(N) printf("\n");
}
int main(){
scanf("%d", &N);
while(N--) run();
return 0;
}