輸入:輸入有若干組,每組數據包含一個整數n(n<=10000)。
輸出:n!的具體值。
代碼如下:
#include<iostream>
#include<cstring>
using namespace std;
int main(){
//未改進算法const int maxn = 50000;
//改進後:因爲int型的f[i]可以存9位數,所以數組f實際上只要20000就行了
const int maxn = 20000;
int n,c,k;
int f[maxn+1];
while(cin >> n)
{
memset(f,0,sizeof(f));
f[0] = 1;
for(int i = 1;i <= n;i ++)
{
c = 0;//代表進位
for( int j = 0; j <= maxn; j++)
{
int s = f[j] * i + c;
// f[j] = s % 10;
// c = s / 10;
// 改進後
f[j] = s % 100000;
c = s / 100000;
}
}
for(k = maxn; k >= 0; k--)
if(f[k] != 0)
break;
for(int j = k; j >= 0; j--)
cout<<f[j];
cout<<endl;
}
return 0;
}