高精度模板第一次修訂版

2021-06-15 08:38:47 字數 1932 閱讀 9251

把之前自己用的大數板子公升級了一下:

更新記錄:

1 增加了讀入函式,修正輸出時的bug。

2 增加了更多的大小關係判斷,可以直接用 sort 函式排序了。

3 從以前用 long long 儲存7位變成用 int 儲存4位,對各oj泛用性更好

4 增加了對int數取模

5 去掉了從 64位整數讀入

6 **風格和細節優化

以下摘錄幾個別人的模板,備用。

hdu 4002 收穫非常大的乙個題 多功能大數模板的應用

乙個非常好用的大數類模板bignum.

hdu 1134 大數取模 使用大數模板

#include #include #include #include #include #include #include using namespace std;

const int mod=10000; //陣列每個元素儲存4位數字

const int maxlen=1000+20; //數字最長位數

class bignum

if (ans.a[0])

else ans.a[0]=p;

return ans; }

bignum operator-(bignum temp) //大數-大數

for (i=1;i<=a[0];i++) if(ans.a[i]) break;

if (i>a[0])

for (j=i;j<=a[0];j++) ans.a[j+1-i]=ans.a[j];

ans.a[0]=a[0]-i+1;

return ans; }

bignum operator*(bignum temp) //大數乘大數

if (ans.a[0])

else ans.a[0]=p;

return ans; }

bignum operator*(int temp) //大數乘以小數

if (ans.a[0])

else ans.a[0]=a[0];

if (ans.a[1]>=mod)

return ans; }

bignum operator/(int x) //大數除以小數

else

for (i=1;i<=a[0];i++) if(ans.a[i]) break;

if (i>a[0])

for (j=i;j<=a[0];j++) ans.a[j+1-i]=ans.a[j];

ans.a[0]=a[0]-i+1;

return ans; }

bignum operator/(bignum temp) //大數除以大數

if (!(low>t)&&!(temp*low>t)) return low;

return high; }

bignum operator%(bignum temp) //大數模大數

int operator%(int temp) //大數模小數

bool operator==(bignum temp) //大數與大數相等

bool operator!=(bignum temp) //不等於

bool operator>(bignum temp) //大於比較

bool operator>=(bignum temp) //大於等於比較

bool operator<=(bignum temp) //小於等於比較

bool operator<(bignum temp) //小於比較

public:

bignum ()

bignum (int x)

bignum (string str)

return -1; }

void print ()

};

第一次寫高精度的錯誤

儲存時忘了將string中的元素轉化為數字 輸出的時候忘記高位在後低位在前,沒有倒序輸出 只有單獨乙個數字時忘記考慮進製 錯誤if i a.size t b i if i b.size t a i 正確 if i a.size t b i if i b.size t a i 忘記考慮最後兩個高位相加...

第一次飛行

開始敲下這段話時,窗外下面正是一片片陽光照耀著的白雲,伴隨著張學友的歌聲,心潮起伏.雖然從初中起,我就經常乙個人坐著火車,汽車東奔西跑,坐飛機卻是第一次.早上上飛機前,心裡忐忑,必竟還是踏在陸地上踏實.但上了飛機後注意力就放在其它地方上去了,而且,運氣好的是我有乙個靠窗的位置.飛機準備起飛了,助跑加...

第一次面試

話說3月4號學院召開實習動員大會並有三家公司過來進行宣講會,分別是國家體育總局亞運專案組,金蝶和華際友天,由此開始了實習生涯。周五的傍晚,正吃著飯的時候突然收到簡訊通知,金蝶週六上午10點有個面試。當晚就瀏覽著些簡歷製作相關的網頁,為第二天做準備,總以為,簡歷弄得可以了,然後每太留意去完善 後來才知...