求階乘之和 高精度

2021-10-19 12:50:40 字數 997 閱讀 2972

一道來自洛谷的求階乘之和的題

由於題目中給出的資料範圍較大,即使用long long也會造成資料溢位,所以要用到高精度的運算.

學習了高精度運算之後就知道,可以用陣列來儲存範圍大的整數,於是,這道題我就是將資料從1開始依次相乘,每乘一次就將結果儲存盡數組當中,然後與前一次乘積結果相加以達到高精度求和的目的.

以下是我寫的**.

#include

#include

#include

using

namespace std;

const

int maxn =

100;

int a[maxn]

, b[maxn]

, c[maxn]

;//a 儲存本次乘積結果, b 儲存上次乘積結果,c 儲存 a和b之和;

int len =1;

// 資料長度;

void

sum()if

(c[len]

)//最後進製可能會導致位數增加;

len++;}

voidmp(

int y)

for(

int i =

0; i < len; i++

)// 模擬乘積後的進製.

int x = a[len]

;while

(x)// 重置長度 len,使陣列每一位都是個位數;

sum();

for(

int i =

0; i <= len; i++)}

int main (

)for(;

!c[len];)

//重置長度,保留有效長度;

len--

;for

(int i = len; i >=

0; i--

) cout << c[i]

;return0;

}

階乘之和(高精度)

題目描述 用高精度計算出s 1 2 3 n n 50 其中 表示階乘,例如 5 5 4 3 2 1。輸入格式 乙個正整數n。輸出格式 乙個正整數s,表示計算結果。輸入輸出樣例 輸入3輸出9 過載運算子 include include include include using namespace s...

高精度計算 階乘之和

include include include define maxn 2000 define maxm 2001 using namespace std int fact 51 maxm int temp maxm 階乘之和 本題需要注意的地方 1。bigint int 小的int不必轉換為big...

P1009 階乘之和 高精度

題目描述 用高精度計算出s 1 2 3 n n 50 s 1 2 3 n n 50 s 1 2 3 n n 50 其中 表示階乘,例如 5 5 4 3 2 15 5 times 4 times 3 times 2 times 15 5 4 3 2 1。輸入格式 乙個正整數nnn。輸出格式 乙個正整數...