大整数加法

题目描述

    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;
}

猜你喜欢

转载自blog.csdn.net/qq_38030194/article/details/80802695