HDOJ 1047
クリックしてリンクを開く
//注意テストデータ(その他は大数加算についてですが、この問題は入力データが最大100ビットなので圧縮は考慮しません)Input 3 00 00 00 000 0 Output 0 0 0 0 0
コード:
//注意テストデータ(その他は大数加算についてですが、この問題は入力データが最大100ビットなので圧縮は考慮しません)Input 3 00 00 00 000 0 Output 0 0 0 0 0
コード:
//////////////////////////////////////////
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
long long int s[5005];
int n[110][5010];
int main()
{
int t;
int i,j,k;
cin>>t;
string str;
while(t--){
i=0;
memset(s,0,sizeof(s));
memset(n,0,sizeof(n));
while(1){
cin>>str;
int len=str.size();
if(str[0]=='0'&&len==1)
break;
for(j=len-1,k=0;j>=0;j--,k++){
n[i][k]=str[j]-48;
}
i++;
}
for(k=0;k<=5000;k++){
for(j=0;j<i;j++){
s[k]+=n[j][k];
}
if(s[k]>=10){
s[k+1]+=s[k]/10;
s[k]%=10;
}
}
j=5000;
while(j--){
if(s[j]!=0)
break;
}
if(j>=0){
for(;j>=0;j--)
printf("%d",s[j]);
cout<<endl;
}
else
cout<<0<<endl;
if(t>=1)
cout<<endl;
}
return 0;
}