首页 > 其他 > 详细

大数相加与大数相减

时间:2019-10-14 15:25:51      阅读:91      评论:0      收藏:0      [点我收藏+]

大数相加模板:

string big_add(string a,string b){
    memset(sum,0,sizeof(sum));
    int len1=a.size();
    int len2=b.size();
    int pos=0;
    int i,j;
    for(i=len1-1,j=len2-1;i>=0&&j>=0;i--,j--){
        int y=a[i]-0+b[j]-0;
        if(y+sum[pos]<10) {
            sum[pos]+=y;
            pos++;
        }
        else {
            sum[pos]+=y-10;
            sum[pos+1]++;
            pos++;
        }
    }
    if(pos<len1){
        for(int t=i;t>=0;t--){
            sum[pos++]+=a[t]-0;
        }
    }
    if(pos<len2){
        for(int t=j;t>=0;t--){
            sum[pos++]+=b[t]-0;
        }
    }
    if(sum[pos]!=0) pos++;
    string s="";
    for(int i=pos-1;i>=0;i--){ 
        char x;
        x=sum[i]+0;
        s+=x;
    }
    return s;
}

大数相减模板(含判断):

string  big_jian(string a,string b){//规定a>b 
    int len1=a.size();
    int len2=b.size();
    int i,j;
    for(i=len2-1,j=len1-1;i>=0&&j>=0;i--,j--){
        a[j]=a[j]-b[i]+0;
        if(a[j]<0){
            int k=j-1;
            while(a[k]<=0){
                    a[k]=9;
                    k--;
            }
            a[k]-=1;
            a[j]+=10;
        }
    }
    string s="";
    for (i = 0; i<len1; i++)    if (a[i] != 0) break;
    for (; i<len1; i++)    s+=a[i];
    return s;
}
bool check (string a,string b){
    if(a.size()>b.size())    return 0;
    else if(a.size()<b.size()) return 1;
    return a<=b;
} 

 

大数相加与大数相减

原文:https://www.cnblogs.com/Accepting/p/11671383.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!