大數的階乘

2021-07-06 08:18:43 字數 847 閱讀 6166

#include#include/* 乙個陣列元素表示4 個十進位制位,即陣列是萬進製的*/

#define bigint_radix 10000

#define radix_len 4

/* 10000! 有35660 位*/

#define max_len (35660/radix_len+1) /* 整數的最大位數*/

int x[max_len + 1];

/*** @brief 列印大整數.

* @param[in] x 大整數,用陣列表示,低位在低位址

* @param[in] n 陣列x 的長度

* @return 無

*/void bigint_print(const int x, const int n) else if (x[i] > 0)

} if(!start_output) printf("0"); /* 當x 全為0 時*/

}/**

* @brief 大整數乘法, x = x*y.

* @param[inout] x x

* @param[in] y y

* @return 無

*/void bigint_mul(int x, const int y)

}/**

* @brief 計算n 的階乘

* @param[in] n

* @param[out] x 存放結果

* @return 無

*/void bigint_factorial(int n, int x)

}int main()

return 0;

}

N的階乘 大數階乘

輸入n求n的階乘的準確值。input 輸入n 1 n 10000 output 輸出n的階乘 首先,要確定n的階乘的數字大概有多少位,這樣便於我們去選擇合適的演算法。階乘 當n 10000時,上式值為35660 已經向上取整 所以接受 include include include include ...

大數的階乘

首先定義乙個足夠長的陣列。拿10000的階乘為例,最後的結果長度是35660位,所以我們定義乙個40000個成員的陣列就可以了。int result 40000 其核心思想就是把計算結果每一位上的數字儲存到乙個陣列成員中,例如 把124儲存至陣列中,儲存結果應該是 result 0 4 result...

大數的階乘

首先要確定這個數的階乘需要開多大的陣列,可以用stirling公式。輸入不超過10000的正整數,計算n 的具體值。include include using namespace std const int maxn 50000 int main for k maxn k 0 k if f k 0 ...