题目描述
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;
}