題目位址 [
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...