题解 | #a+b#

a+b

http://www.nowcoder.com/questionTerminal/4c39c984ea3848b48e111b8e71ec1dd4

  • 大数相加:字符串加法
  • 补0使长度一致
  • 计算每位的和
#include<iostream>
#include<string>
using namespace std;

string add_str(string a,string b){
    string c;//保存加法结果
    int k=a.size()-b.size();//计算长度差,并补0使长度一致
    if(k>0){
        for(int i=0;i<k;i++){
            b="0"+b;
        }
    }
    else if(k<0){
        for(int i=0;i<-k;i++){
            a="0"+a;
        }
    }
    int jinwei=0;
    int cur;
    for(int i=a.size()-1;i>=0;i--){//最低位开始加
        cur=jinwei+a[i]-'0'+b[i]-'0';//和
        int x=cur%10;
        c.insert(0,1,x+'0');//每次把结果插入c的最前面
        jinwei=cur/10;//进位
    }
    if(jinwei!=0)c="1"+c;
    return c;
}

int main(){
    string a,b;
    while(cin>>a>>b){
        cout<<add_str(a,b)<<endl;
    }
    return 0;
    
}
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务