輸入乙個不超過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...