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