#include<iostream>
#include<cstring>
using namespace std;
#define N 3000
int main()
{
//求不超过1000整数的阶乘 1000!约等于 4*pow(10,2567),所以可以用一个3000位的数组
memset(Digit_Value,0,sizeof(int)*3000);
int num;
cin >> num;
Digit_Value[0] = 1;
for (int i = 2; i <= num; i++)
{
int Carry = 0;
for (int j = 0; j < N; j++)
{
int sum = 0;
sum = i * Digit_Value[j] + Carry;
Carry = sum / 10;
Digit_Value[j] = sum % 10;
}
}
int temp;
//删除多余的0
for (int i = N; i >= 0 ; i--)
{
temp = i;
if (Digit_Value[i] != 0)
break;
}
for (int i = temp; i >= 0; i--)
cout << Digit_Value[i];
cout << endl;
system("pause");
return 0;
}
转载于:https://my.oschina.net/u/2286203/blog/364740