【大整数】a+b(考虑正负数)

a+b

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

/* 大精度整数加减法 */
#include <cstdio>
#include <iostream>
#include <algorithm>
using namespace std;

struct BigN{
    int d[1000];
    int len;
    BigN(){
        fill(d,d+1000,0);
        len = 0;
    }
};
BigN change(string str){
    BigN n;
    n.len = str.length();
    for(int i=0; i<n.len; i++){
        n.d[i] = str[str.length()-i-1]-'0';
    }
    return n;
}
BigN add(BigN a,BigN b){
    BigN c;
    int carry = 0;
    for(int i=0; i<a.len||i<b.len; i++){
        int current = a.d[i] + b.d[i] + carry;
        c.d[c.len++] = current%10;
        carry = current/10;
    }
    if(carry!=0){
        c.d[c.len++] = carry;
    }
    return c;
}
void Print(BigN a){
    for(int i=a.len-1;i>=0;i--){
        cout<<a.d[i];
    }
    cout<<"\n";
}
int main(){
    string a,b;
    while(cin>>a>>b){
        BigN A = change(a);
        BigN B = change(b);
        Print(add(A,B));
    }
    return 0;
}

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务