大整數類(已完善)

2022-04-09 17:58:31 字數 3758 閱讀 7312

#include#include

#include

#include

#include

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

intoperator%(const

int &) const; //

大數對乙個int型別的變數進行取模運算

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++;

returnin;

}/*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;

returnt;}

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型別的變數進行取模運算

returnd;}

bignum bignum::

operator^(const

int & n) const

//大數的n次方運算

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

int & t) const

//大數和乙個int型別的變數的大小比較

void bignum::print() //

輸出大數

//cout << endl;

printf("\n"

);}int main(void)

cout

<< ans

; }

return0;

}

大整數類 模板

bigint v2.0 by kunsoft include include include include include include include include include using namespace std typedef long long llt class bigint ...

C 大整數類

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!include include include include using namespace std define maxn 9999 define maxsize 10 define dlen 4 class bignum 建構函式 bignu...

大整數類 模板

bigint v2.0 by kunsoft include include include include include include include include include using namespace std typedef long long llt class bigint ...