码迷,mamicode.com
首页 > 其他好文 > 详细

oj---九度oj----大数---进制转换

时间:2017-06-21 13:51:43      阅读:99      评论:0      收藏:0      [点我收藏+]

标签:blog   span   tor   log   i++   void   字符   set   main   

 

 

struct bigInteger{
    int digit[maxDigits];
    int size;
}

这里digit每一位的权重都乘以10000;

如果不是特别大的数,没必要;乘以10000后,把字符串转化为数字比较麻烦

 

#include<cstdio>
#include<cstring>

#define maxDigits 100

struct bigInteger{
    int digit[maxDigits];
    int size;
    void init(){
        for(int i=0;i<maxDigits;i++) digit[i]=0;
        size = 0;
    }
    void set(int x){
        init();
        do{
            digit[size++]=x%10000;
            x/=10000;
        }while(x!=0);
    }
    void output(){
        for(int i=size-1;i>=0;i--){
            if(i!=size-1) printf("04d",digit[i]);
            else printf("%d",digit[i]);
        }
    }
    bigInteger operator * (int x) const{
        bigInteger ret;
        ret.init();
        int carry=0;
        for(int i=0;i<size;i++){
            int tmp=x*digit[i]+carry;
            carry=tmp/10000;
            ret.digit[ret.size++]=tmp%10000;
        }
        if(carry!=0)
            ret.digit[size++]=carry;
        return ret;
    }
    bigInteger operator + (const big Integer &A) const{
        bigInteger ret;
        ret.init();
        int carry=0;
        for(int i=0;i<A.size||i<size;i++){
            int tmp=digit[i]+A.digit[i]+carry;
            carry=tmp/10000;
            ret.digit[ret.size++]=tmp%10000; 
        }
        if(carry!=0)
            ret.digit[ret.size++]=carry;
        return ret;
    }
    bigInteger operator / (int x) const{
        bigInteger ret;
        ret.init();
        int r=0; //r<-->remainder
        for(int i=size-1;i>=0;i--){
            int t=(r*10000+digit[i])/x;
            r=(r*10000+digit[i])%x;
            ret.digit[i]=t;
        }
        ret.size=0;
        for(int i=0;i<maxDigits;i++){
            if(ret.digit[i]!=0)
                ret.size=i;
        }
        ret.size++;
        return ret;
    }
}

 

oj---九度oj----大数---进制转换

标签:blog   span   tor   log   i++   void   字符   set   main   

原文地址:http://www.cnblogs.com/kprac/p/7058722.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!