// // LiBigInt.h // Free for educational use.. By Chung-Chih Li, 8-21-2003 // #include using namespace std; class LiBigi { public: LiBigi(); LiBigi(long n); void shift_left_10(); char shift_right_10(); // returns the killed digit char operator [](int i); vector number; // push_back a as the most significant digit. char mysign; }; /************************************/ // Standard I/O operators. /************************************/ ostream & operator << (ostream & outputstream, LiBigi & n); istream & operator >> (istream & inputstream, LiBigi & n); /************************************/ // Standard logical operators. /************************************/ bool operator == (LiBigi a, LiBigi b); bool operator != (LiBigi a, LiBigi b); bool operator >= (LiBigi a, LiBigi b); bool operator > (LiBigi a, LiBigi b); bool operator <= (LiBigi a, LiBigi b); bool operator < (LiBigi a, LiBigi b); /************************************/ // Standard arithmetic operators. // /************************************/ LiBigi operator + (LiBigi a, LiBigi b); LiBigi operator - (LiBigi a, LiBigi b); LiBigi operator * (LiBigi a, LiBigi b); LiBigi operator / (LiBigi a, LiBigi m); LiBigi operator ^ (LiBigi a, LiBigi b); LiBigi operator % (LiBigi a, LiBigi m); LiBigi operator ++ (LiBigi & a); /************************************/ // Miscellanea // /************************************/ long to_long(LiBigi n); LiBigi ABS(LiBigi a); void half(LiBigi &n); void cut_leading_zero(LiBigi &n);