首页 > 编程语言 > 详细

算法入门经典P124(BigInteger)

时间:2021-07-16 15:58:35      阅读:34      评论:0      收藏:0      [点我收藏+]
#include<iostream>
using namespace std;
#include<vector>
#include<cstring>
struct BigInteger{
    static const int BASE = 100000000;
    static const int WIDTH = 8;
    vector<int>s; 
    BigInteger(long long num = 0){
        *this = num;
    }
    BigInteger operator = (long long num){
        s.clear();
        do{
            s.push_back(num%BASE);
            num /= BASE;
        }while(num>0);
        return *this;
    } 
    BigInteger operator = (const string&str){//123456789
        s.clear();
        int x,len = (str.length()-1)/WIDTH + 1;//len=2
        for(int i=0;i<len;i++){
            int end = str.length()-i*WIDTH;//end=9,1
            int start = max(0,end-WIDTH);//start=1,0
            sscanf(str.substr(start,end-start).c_str(),"%d",&x);
            s.push_back(x);
        }
        return *this;
    }
};
ostream&operator <<(ostream&out,BigInteger&x){
    out<<x.s.back();
    char buf[20];
    for(int i=x.s.size()-2;i>=0;i--){
        sprintf(buf,"%08d",x.s[i]);
        for(int j=0;j<strlen(buf);j++){
            out<<buf[j];
        }
    }
    return out;
}
istream&operator >>(istream&in,BigInteger&x){
    string s;
    if(!(in>>s)){
        return in;
    }
    x = s;
    return in;
}
int main(){
    BigInteger x;
    cin>>x;
    cout<<x<<endl; 
    return 0;
}

 

算法入门经典P124(BigInteger)

原文:https://www.cnblogs.com/stevenzrx/p/15019791.html

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