YunYan

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

大数相加模板:

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

 

posted on 2019-10-14 14:39  Target--fly  阅读(301)  评论(0编辑  收藏  举报