#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; }
原文:https://www.cnblogs.com/stevenzrx/p/15019791.html