高精度類模板

2021-09-28 17:56:01 字數 2416 閱讀 2888

《更新提示》

《正文》

這是乙個無符號整型高精度類的模板,以108

10^8

108壓位,支援加減乘法取模運算和算術左移右移運算,乘法用的是樸素實現方式,時間複雜度o(n

2)

o(n^2)

o(n2

),除法用的是倍增實現,時間複雜度o(n

log⁡n)

o(n\log n)

o(nlogn)

,支援直接輸入輸出。

比較和運算的函式就寫了常用的幾個,可能會長期更新。一般用到高精度的題目沒有特殊說明用的就是這個模板。

#include

using

namespace std;

const

int size =

10020

, base =

1e8;

struct bign

inline

void

read

(void

)// 直接讀入

inline

void

print

(void

)// 直接輸出,帶換行

friend

bool

operator

<

(bign a,bign b)

// 比較運算子 <

friend

bool

operator

>

(bign a,bign b)

// 比較運算子 >

friend bign operator

+(bign a,bign b)

// 加法

friend bign operator

-(bign a,bign b)

// 減法

while

( c.len &&

!c.d[c.len]

) c.len--

;return c;

}friend bign operator

*(bign a,bign b)

// 乘法

while

( c.len &&

!c.d[c.len]

) c.len--

;return c;

}inline bign shl

(void

)// 算術左移

while

( len &&

!d[len]

) len--

;return

*this;}

inline bign shr

(void

)// 算術右移

while

( len &&

!d[len]

) len--

;return

*this;}

friend bign operator

/(bign a,bign b)

// 除法

return res;

}friend bign operator

%(bign a,bign b)

// 取模

friend

bool

operator

<=

(bign a,bign b)

friend

bool

operator

>=

(bign a,bign b)

friend

bool

operator

==(bign a,bign b)

friend

bool

operator

!=(bign a,bign b)

// 常見的比較運算子

friend

void

operator+=

(bign &a,bign b)

friend

void

operator-=

(bign &a,bign b)

friend

void

operator*=

(bign &a,bign b)

friend

void

operator/=

(bign &a,bign b)

friend

void

operator%=

(bign &a,bign b)};

inline bign euclid

(bign a,bign b)

return res *

( a.len >

0? a : b );}

// 二進位制歐幾里得演算法

intmain

(void

)

《後記》

高精度模板

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