關於高精度

2022-03-06 22:48:48 字數 1762 閱讀 6754

雖然noip不會重點考這個但是為了防止不必要的丟分還是準備一下比較好。

高精度的原理就是我們小學的時候所使用的豎式運算。

所以以字串的形式模擬一下運算過程結果就出來了。

#include#include

#include

#include

#include

#include

#include

using

namespace

std;

const

int maxn = 410

;struct

bign

bign(

intnum)

bign(

const

char *num)

bign

operator = (const

intnum)

bign

operator = (const

char *num)

bign

operator + (const bign &b)

return

c; }

bign

operator += (const bign &b)

void

clean()

bign

operator * (const bign &b)

c.clean();

return

c; }

bign

operator *= (const bign &b)

bign

operator - (const bign &b)

c.s[c.len++] =x;

}c.clean();

return

c; }

bign

operator -= (const bign &b)

bign

operator / (const bign &b)

}c.len =len;

c.clean();

return

c; }

bign

operator /= (const bign &b)

bign

operator % (const bign &b)

bign

operator %= (const bign &b)

bool

operator

< (const bign &b)

bool

operator > (const bign &b)

bool

operator == (const bign &b)

bool

operator >= (const bign &b)

bool

operator

<= (const bign &b)

bool

operator != (const bign &b)

string str() const

};istream& operator >> (istream &in, bign &x)

ostream& operator

<< (ostream &out, bign &x)

intmain()

以上為封裝好的高精度。

請各位大爺盡情享用。

一世安寧

高精度之關於高精度的其他問題

高精度階乘其實就是加法的高階版,樸素的版本可以模擬階乘過程,首先階乘的資料必定不會太大,所以可以持續用高精度乘以低精度進行計算。但是問題是當n 稍微大一點就會導致執行超時。所以可以把n 拆成n n 1 n 2 n 3 或是更少的組進行計算,最後再採用高精度乘以高精度合併結果。當給出的資料位數很大時帶...

高精度除法(高精度除以高精度)

先貼乙個簡單的高精度除以單精度的 include include include using namespace std int main else ys ys 10 a i 0 while c i 0 i for int j i j 0 j printf d c j if ys printf d ...

高精度除高精度

演算法流程 第一步,讀入被除數 a 和 除數 b,判斷是否 a b,是則輸出 0 並結束演算法,否則令 answer 0 第二步,令餘數 remainder 0,令 i 從被除數最高位的下標開始 第三步,令 remainder remainder 10 a i 令 c 9 第四步,判斷是否 b c ...