支持加减,日后会完善
struct BigInteger{
static const int Base = 10;
static const int WIDTH = 1;
vector<int>s;
BigInteger (ll num = 0){
*this = num;
}
BigInteger operator = (ll num){
s.clear();
do{
s.push_back(num%Base);
num/=Base;
}while (num > 0);
return *this;
}
BigInteger operator = (const string &str){
s.clear();
int i,len = (str.length());
for(i=1;i<=len;i++){
s.push_back(str[len-i] - '0');
}
return *this;
}
BigInteger operator + (const BigInteger &b){
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 < s.size()){
x+=s[i];
}
if(i < b.s.size()){
x+=b.s[i];
}
c.s.push_back(x%Base);
g = x/Base;
}
return c;
}
BigInteger operator - (const BigInteger &b){
BigInteger c = *this;
for(int i = 0;i<b.s.size();i++){
c.s[i] -= b.s[i];
if(c.s[i] < 0){
c.s[i+1]--;
c.s[i]+=Base;
}
}
return c;
}
};