輸入不超過1000的正整數n,輸出n!=1*2*3*4*···*n的精確結果。
樣例輸入:30
樣例輸出:265252859812191058636308480000000
程序:
#include <iostream>
#include <cstring>
using namespace std;
const int maxn = 3000; // 數組長度
int f[maxn]; // 用於存放結果
int main()
{
int i, j, n;
cin >> n;
memset(f, 0, sizeof(f)); // 全部初始化為零
f[0] = 1; // 結果初始化為1
int l = 0; // l表示結果的長度
//循環計算從1到n的值
for(i = 1; i <= n; i++)
{
int c = 0;
for(j = 0; j <= l; j++)
{
int s= f[j] * i + c;
f[j] = s%10;
c= s/10;
if(s/10 > 0 && j == l)
l++;
}
}
// 通過循環輸出結果,結果長度為l
for(i = l; i >= 0; i--)
cout << f[i];
cout <<endl;
return 0;
}