#include <cstdio>
#include <iostream>
using namespace std;
void solve(int n)
{
int carry,j;
int digit; //digit里面存的是这个大数有几位
int temp,i;
int a[40010]={1};
digit = 1;
for(i=2; i<=n; i++) //i是在阶乘当中我每次要乘的数
{
for(carry=0,j=1;j<=digit;j++)
{
temp = a[j-1]*i+carry;//最后的数保存在a[]里面的
a[j-1] = temp % 10;
carry = temp / 10;
}
while(carry)
{
a[++digit - 1 ] = carry % 10;
carry /= 10;
}
}
for(int k = digit ; k>=1; k--)
printf("%d",a[k-1]);
printf("
");
}
int main()
{
int n;
while(scanf("%d",&n)!=EOF)
{
solve(n);
}
return 0;
}
题目