【高精度】加法天才

问题 A: 【高精度】加法天才

时间限制: 1 Sec  内存限制: 64 MB
提交: 14  解决: 10
[提交] [状态] [讨论版] [命题人:]

题目描述

贝贝是一个聪明的小孩,他总喜欢玩数字加法的游戏。一天,他的数学老师为了考一考他的能力,出了一道这样的题:要求他在短时间内计算出两个大数相加的结果。这两个大数可不是普通的数字,它们是11位以上的“庞然大物”。
请你编程序,帮贝贝解决这个问题。


输入

两行,分别是两个需要相加的数A和B,这两个数在10^11~10^100之间。


输出

1行,是两个大数相加的结果。


样例输入

8569742356145896
215783669444444427


样例输出

224353411800590323
#include <iostream>
#include <string>
using namespace std;
string add(string a,string b){
    if(a.size()<b.size()){
        string temp=a;
        a=b;
        b=temp;
    }
    int len1=a.size(),len2=b.size(),flag=0,pa,pb,sum;
    while(len1>0){
        pa=a[len1-1]-'0';
        pb=len2>0?b[len2-1]-'0':0;
        sum=pa+pb+flag;
        a[len1-1]='0'+sum%10;
        flag=sum/10;
        len1--;len2--;
    }
    if(flag)a="1"+a;
    return a;
}
int main(){
    string a,b;
    cin>>a>>b;
    cout<<add(a,b)<<endl;
    return 0;
}
View Code

原文地址:https://www.cnblogs.com/Rhythm-/p/9350256.html