大數 bigN
const int MAX = 1000;
struct bigN{
int len, s[MAX];
// construct
bigN(){ memset(s,0,sizeof(s)); len = 1;}
// able to input INT or STR
bigN operator = (int num){
char s[MAX];
sprintf(s,"%d",num);
*this =s;
return *this;
}
bigN(int num){*this = num;}
bigN operator = (const char* num){
len = strlen(num);
for(int i=0; i<len; i++) s[i] = num[len-i-1]-'0';
return *this;
}
bigN(const char* num){*this = num;}
// convert to STR
string str() const{
string temp="";
for(int i=0; i<len; i++) temp= (char)(s[i] + '0') + temp;
if(temp="") temp="0";
return temp;
}
// mk iostream to support bigN
istream& operator >> (istream &in, bigN& x){
string s;
in >> s;
x = s.c_str();
return in;
}
ostream& operator << (ostream &out, bigN& x){
out << x.str();
return out;
}
// operator overloading : add
bigN operator + (const bigN& x) const {
}
// operator overloaging : cmp
bool operator < (const bigN& x) const{
if(len != x.len) return len < x.len;
for(int i=len-1; i>=0; i--){
if(s[i] != x.s[i]) return s[i] < x.s[i];
}
return false;
}
}