杭电1042
发布网友
发布时间:2022-05-13 07:01
我来回答
共1个回答
热心网友
时间:2024-02-08 04:55
#include<stdio.h>
#include<string.h>
#define MAX 8000
int array[MAX+5]={0};
int main()
{
int n,i,j;
// 读入N并初始话数组
while(scanf ( "%d" , &n)!=EOF)
{
memset(array,0,sizeof(array));
array[0] = 1;
//将阶乘存到数组中
for ( i=2 ; i<=n; i++)
{
int c=0;
for ( j=0; j<MAX; j++)
{
int s=array[j]*i+c;
array[j]=s%100000;
c=s/100000;
}
}
//打印数组
for ( j=MAX-1; j>=0; j--)
if (array[j])
break;
printf("%d",array[j]);
for ( i=j-1; i>=0; i--)
printf("%05d",array[i]);
printf("\n");
}
return 0;
}