高精度過載模板

2021-08-16 05:15:29 字數 3190 閱讀 6310

高精度過載模板,bignum,過載了:

輸入操作 >>

輸出操作.print()

賦值操作 =

四則運算 + - * /

冪次運算 ^

取模運算 %

比較操作 > 和 ==

#include using namespace std;

#define maxn 9999

#define maxsize 1000

#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型別的變數的大小比較

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次方運算

return ret;

}bool bignum::operator>(const bignum & t) const   //大數和另乙個大數的大小比較

else

return false;

}bool bignum::operator==(const bignum & t) const   //大數和另乙個大數的大小比較

void bignum::print()    //輸出大數

//cout << endl;

printf("\n");

}int main()

高精度模板

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型別的變數轉化為大...