#include#include#include#include#includetypedef long long ll;
using namespace std;
#define maxn 9999 //每個陣列成員最多容納的大小
#define maxsize 10000 //位數
#define dlen 4
class bignum
//建構函式
bignum(const int); //將乙個int型別的變數轉化為大數
bignum(const char*); //將乙個字串型別的變數轉化為大數
bignum(const bignum &); //拷貝建構函式
bignum &operator=(const bignum &); //過載賦值運算子,大數之間進行賦值運算
friend istream& operator>>(istream&, bignum&); //過載輸入運算子
friend ostream& operator<<(ostream&, bignum&); //過載輸出運算子
bignum operator+(const bignum &) const; //過載加法運算子,兩個大數之間的相加運算
bignum operator-(const bignum &) const; //過載減法運算子,兩個大數之間的相減運算
bignum operator*(const bignum &) const; //過載乘法運算子,兩個大數之間的相乘運算
bignum operator/(const int &) const; //過載除法運算子,大數對乙個整數進行相除運算
bignum operator^(const int &) const; //大數的n次方運算
int operator%(const int &) const; //大數對乙個int型別的變數進行取模運算
bool operator>(const bignum & t) const; //大數和另乙個大數的大小比較
bool operator<(const bignum & t) const;
bool operator>(const int & t) const; //大數和乙個int型別的變數的大小比較
bool operator<(const int & t) const;
ll toll();
void print(); //輸出大數
}; bignum::bignum(const int b) //將乙個int型別的變數轉化為大數
a[len++] = d;
}bignum::bignum(const char*s) //將乙個字串型別的變數轉化為大數
}bignum::bignum(const bignum & t) : len(t.len) //拷貝建構函式
bignum & bignum::operator=(const bignum & n) //過載賦值運算子,大數之間進行賦值運算
istream& operator>>(istream & in, bignum & b) //過載輸入運算子
b.a[count]=sum;
count++;
}b.len =count++;
return in;
}ostream& operator<<(ostream& out, bignum& b) //過載輸出運算子
return out;
}bignum bignum::operator+(const bignum & t) const //兩個大數之間的相加運算
} if(t.a[big] != 0)
t.len = big + 1;
else
t.len = big;
return t;
}bignum bignum::operator-(const bignum & t) const //兩個大數之間的相減運算
else
big=t1.len;
for(i = 0 ; i < big ; i++)
else
t1.a[i] -= t2.a[i];
}t1.len = big;
while(t1.a[len - 1] == 0 && t1.len > 1)
if(flag)
t1.a[big-1]=0-t1.a[big-1];
return t1;
} bignum bignum::operator*(const bignum & t) const //兩個大數之間的相乘運算
else
} if(up != 0)
ret.a[i + j] = up;
} ret.len = i + j;
while(ret.a[ret.len - 1] == 0 && ret.len > 1)
ret.len--;
return ret;
} bignum bignum::operator/(const int & b) const //大數對乙個整數進行相除運算
ret.len = len;
while(ret.a[ret.len - 1] == 0 && ret.len > 1)
ret.len--;
return ret;
}int bignum::operator %(const int & b) const //大數對乙個int型別的變數進行取模運算
return d;
}bignum bignum::operator^(const int & n) const //大數的n次方運算
if(n==0)
return 1;
if(n==1)
return *this;
int m=n;
while(m>1)
m-=i;
ret=ret*t;
if(m==1)
ret=ret*(*this);
}return ret;
}bool bignum::operator>(const bignum & t) const //大數和另乙個大數的大小比較
else
return false;
}bool bignum::operator<(const bignum & t) const
bool bignum::operator >(const int & t) const //大數和乙個int型別的變數的大小比較
bool bignum::operator <(const int & t) const
ll bignum::toll()
void bignum::print() //輸出大數
cout << endl;
}const int ff[10]=;
int f(bignum n)
return f(n/5)*t%10;
}int main()
return 0;
}
高精度模板
include include include includeusing namespace std define maxn 9999 define maxsize 10 define dlen 4 class bignum bignum const int 將乙個int型別的變數轉化為大數 big...
高精度模板
include include include include include using namespace std const int maxn 1000 struct bign bign operator const char num 過載運算子 bign const char num 支援初...
高精度模板
include include include includeusing namespace std define maxn 9999 define maxsize 10 define dlen 4 class bignum 建構函式 bignum const int 將乙個int型別的變數轉化為大...