N的階乘 大數運算

2021-09-09 07:17:20 字數 896 閱讀 3524

題目位址 [

description given an integer n(0 ≤ n ≤ 10000), your task is to calculate n!
one n in one line, process to the end of file.
for each n, output n! in one line.
2

3

2

6

這個題暴力是肯定不行,算到20多就炸了,這個題給的範圍到10000

所以,這個題運用到大數運算

我們用陣列a來儲存資料的每一位,用digit來表示當前的位數。 並初始化digit=1,a[0]=1;

n=2 a[0]=2

n=3 a[0]=6

n=4 a[0]=4 a[1]=2

n=5 a[0]=0 a[1]=2 a[2]=1

…看到以上的資料肯定能明白 關鍵是怎麼實現的呢

儲存的資料是從個位開始儲存的,只需要temp=a[0]*i+num (i的取值範圍 1-n,num模擬的是的乙個進製運算,例如n=5的時候 a[0]=(4 * 5)%10=0, 個位確定為0,a[1]=(2 * 5+(20/10))%10=2,十位確定為2 這個時候n=4的時候digit=2,已經計算完了,這個時候num=12/10=1!=0 還需要再一次往前進製 a[digit]=num%10=1 digit++ 位數為3 結束)

#include#includeusing namespace std;

int main()

return 0;

} ```

模擬乘法運算之N的階乘(大數階乘)

基於aoj 787和51nod 1057討論n的階乘問題。在這裡,討論的大數階乘的演算法主要是模擬乘法運算,我們用乙個乘數和另乙個乘數各位相乘,則該乘積的個位為結果的一位,該乘積的高位均為進製。需要注意的是,各位乘完後,進製可能是個多位數,則該多位數可以直接輸出。我們可以設定乙個陣列w k 來儲存乘...

N的階乘 大數階乘

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

N (大數階乘)

given an integer n 0 n 10000 your task is to calculate n input one n in one line,process to the end of file.output for each n,output n in one line.sam...