題目描述
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.
示例1
輸入
123456789012345678901234567890 123456789012345678901234567890 123456789012345678901234567890 0
輸出
370370367037037036703703703670
//大整數相加
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
string add(string a,string b)
{
int carry=0;
string ans="";
int len1=a.size();
int len2=b.size();
int len=len1>len2?len1:len2;
if(len==len1)//說明a串長
{
for(int i=0;i<len-len2;i++)
{
b='0'+b;
}
}
if(len==len2)//說明b串長
{
for(int i=0;i<len-len1;i++)
{
a='0'+a;
}
}//將串補齊
//cout<<a<<b;
for(int i=len-1;i>=0;i--)
{
int t=(a[i]-'0')+(b[i]-'0')+carry;
carry=t/10;
ans+=(t%10)+'0';
}
if(carry)
{
ans+=carry+'0';
//carry%=10;
}
return ans;
}
int main()
{
//string sum="";
string a,b;
int flag=0;
while(cin>>a&&!flag)
{
if(a=="0")break;
while(cin>>b)
{
if(b=="0")
{
flag=1;
break;
}
a=add(a,b);
reverse(a.begin(),a.end());
}
// reverse(a.begin(),a.end());
cout<<a<<endl;
}
return 0;
}