给你一个只支持*=(int)的
class BigInt
{
typedef unsigned long FUNDUS_T;
typedef unsigned long long int ACCUMULATE_T;
typedef vector<FUNDUS_T> CONTAINER_T;
enum {FUNDUS = 1000000000};
enum {FUNDUS_LEN = numeric_limits<FUNDUS_T>::digits10};
public:
BigInt(FUNDUS_T x = 0)
{
c.reserve(65535);
do
{
c.push_back(x % FUNDUS);
x /= FUNDUS;
} while (x != 0);
}
public:
BigInt & operator*=(FUNDUS_T x)
{
ACCUMULATE_T carry = 0;
for (CONTAINER_T::iterator i = c.begin(); i != c.end(); ++i)
{
carry = ACCUMULATE_T(*i) * x + carry;
*i = carry % FUNDUS;
carry /= FUNDUS;
}