题目描述
One of the first users of BIT's new supercomputer was Chip Diller. He extended his exploration of powers of 3 to go from 0 to 333 and he explored taking various sums of those numbers. "This supercomputer is great,'' remarked Chip. "I only wish Timothy were here to see these results.'' (Chip moved to a new apartment, once one became available on the third floor of the Lemon Sky apartments on Third Street.)
输入描述:
The input will consist of at most 100 lines of text, each of which contains a single VeryLongInteger. Each VeryLongInteger will be 100 or fewer characters in length, and will only contain digits (no VeryLongInteger will be negative). The final input line will contain a single zero on a line by itself. 注意输入数据中,VeryLongInteger 可能有前导0
输出描述:
Your program should output the sum of the VeryLongIntegers given in the input.
输入
123456789012345678901234567890 123456789012345678901234567890 123456789012345678901234567890 0
输出
370370367037037036703703703670
C++实现:
#include<iostream>
using namespace std;
int main(){
string s[101];
int c[101][101];
int result[101];
int k=0;
string S;
int maxlen=0;
while(cin>>S){
if(S=="0")
break;
else{
s[k++]=S;
//注意string数组访问边界为size()-1
if(S.size()-1>maxlen)
maxlen=S.size()-1;
}
}
for(int i=0;i<k;i++){
int len=s[i].size()-1;
for(int j=maxlen;j>=0;j--){
if(len!=-1)
c[i][j]=s[i][len--]-'0';
else
c[i][j]=0;
}
}
int next=0;
for(int j=maxlen;j>=0;j--){
int num=0;
for(int i=0;i<k;i++){
num+=c[i][j];
}
num=num+next;
result[j]=num%10;
next=num/10;
if(j==0&&num>=10)
cout<<next;
}
for(int i=0;i<=maxlen;i++)
cout<<result[i];
cout<<endl;
}