大數模版 (Kuangbin模版)

2021-10-08 23:41:24 字數 3776 閱讀 1029

直接嵌入**中用即可。

/*

* 完全大數模板

* 輸出cin>>a

* 輸出a.print();

* 注意這個輸入不能自動去掉前導0的,可以先讀入到char陣列,去掉前導0,再用建構函式。

*/#define maxn 9999

#define maxsize 1010

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

;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)else t1.a[i]

-=t2.a[i];}

t1.len=big;

while

(t1.a[t1.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型別的變數進行取模

bignum bignum::

operator^(

const

int&n)

const

//大數的n次方運算

return ret;

}bool bignum::

operator

>

(const bignum &t)

const

//大數和另乙個大數的大小比較

else

return

false;}

bool bignum::

operator

>

(const

int&t)

const

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

void bignum::

print()

//輸出大數

函式模版 特化 模版指標

函式特化在下面做了大量的補充 類模版 函式模版與類模版的乙個不同點是 類模版如 template class a 那麼 a或 a是乙個類 即a是模版,a後面帶著則是乙個類 函式模版如 template t compare const t a,const t b 那麼compare生成compare ...

函式模版和模版函式,類模版和模版類的區別

什麼是函式模板和類模板 函式模板是一種抽象函式定義,它代表一類同構函式。通過使用者提供的具體引數,c 編譯器在編譯時刻能夠將函式模板例項化,根據同乙個模板建立出不同的具體函式,這些函式之間的不同之處主要在於函式內部一些資料型別的不同,而由模板建立的函式的使用方法與一般函式的使用方法相同。函式模板的定...

大整數模版

include include include include includeusing namespace std define maxn 9999 define maxsize 10 define dlen 4 class bignum 建構函式 bignum const int 將乙個int型...