C++ 大数类

#include
#include
#include
#include
#include
using namespace std;
string to_string(long long x)
{
    string ans1,ans2;
    while(x)
    {
        int tt=x%10;
        ans1+=(tt+'0');
        x/=10;
    }
    for(int i=ans1.length()-1;i>=0;i--)
        ans2+=ans1[i];
    return ans2;
}
struct BigInteger
{
    static const int BASE=(int)1e8;
    static const int WIDTH=8;
    vectors;
    BigInteger(long long num=0){*this=num;}
    BigInteger(const string &str){*this=str;}
    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)
    {
        s.clear();
        int x,len=(str.length()-1)/WIDTH+1;
        for(int i=0;i         {
            int end=str.length()-i*WIDTH;
            int start=max(0,end-WIDTH);
            sscanf(str.substr(start,end-start).c_str(),"%d",&x);
            s.push_back(x);
        }
        return *this;
    }
    BigInteger operator + (const BigInteger &b)const
    {
        BigInteger c;
        c.s.clear();
        for(int i=0,g=0;;i++)
        {
            if(g==0&&i>=s.size()&&i>=b.s.size())break;
            int x=g;
            if(i             if(i             c.s.push_back(x%BASE);
            g=x/BASE;
        }
        return c;
    }
    BigInteger operator *(BigInteger const& b) const
    {
        BigInteger answer;
        for(int i=0;i         {
            long long tmp;
            for(int j=0;j             {
                tmp=1LL*s[i]*b.s[j];
                string t=to_string(tmp);
                for(int x=(i+j);x!=0;x--)
                {
                    string s="00000000";
                    t+=s;
                }
                answer=answer+BigInteger(t);
            }
        }
        return answer;
    }
};
ostream& operator << (ostream &out,const BigInteger& x)
{
    out<     for(int i=x.s.size()-2;i>=0;i--)
    {
        char buf[20];
        sprintf(buf,"%08d",x.s[i]);
        for(int j=0;j             out<     }
    return out;
}
istream& operator >>(istream &in,BigInteger& x)
{
    string t;
    in>>t;
    x=t;
    return in;
}
mapT;
int main()
{
    //int fff=12345;
    //cout<     BigInteger x;
    x=1;
    for(int i=0;i<=1000;i++)
    {
        T[i]=x;
        x=x*2;
    }
    int t;cin>>t;
    while(t--)
    {
        int n;cin>>n;
        cout<     }
}
 

你可能感兴趣的:(C++ 大数类)