階乘的精確值

2021-08-31 12:55:03 字數 580 閱讀 5526

輸入乙個不超過1000的正整數n,輸出n!

簡單輸入:

30簡單輸出:

265252859812191058636308480000000

#include

#include

#define maxn 3000

int f[maxn];

//演算法分析:由於資料不超過1000,則最大為1000,而1000的階乘那是很大的,已經超過了現有的資料型別的長度,

//1000! 大約等於4 * 10^2567,則我們用乙個整型陣列來儲存階乘的結果,因此我們可以用乙個3000的陣列來儲存結果

//f[0]儲存個位, f[1]儲存十位.....,來模擬手算的乘法

int main()

}for(i = maxn - 1; i >= 0; i--)

if(f[i])

break;

for(j = i; j >= 0; j--)

printf("%d", f[j]);

printf("\n");

return 0;

}

階乘的精確值

例如輸入不超過1000的正整數n,輸出n 1x2x3.xn的精確結果。例如輸入30輸出 265252859812191058636308480000000 當輸入1000時1000的階乘約4 10 2567 大概3000位數字,如果採用普通的階乘演算法很明顯溢位 int fun int n 求n的階...

求n的階乘的精確值

斯特林公式可以求出n!的近似值,但是如果需要求精確值的話,就要採取另外的辦法了。當n 1000的時候,可以直接模擬求階乘,用乙個陣列儲存階乘的每一位,大概3000的陣列就行。程式如下 include include define n 3000 int f n 儲存階乘的位數 int main ret...

演算法入門經典 題目 5 2 2 階乘的精確值

5.2.2 階乘的精確值 輸入乙個不超過1000的數n,計算n!很顯然,1000的階乘會超過int的表示範圍,所以我們要借助陣列來儲存。這裡的具體做法是,先生成乙個陣列,a 0 處放個位數。初始為a 表示1 然後從2 n,每次將乙個數乘到陣列中去。而每次乘乙個數,具體做法是設定乙個進製值c,初始為0...