</pre><pre name="code" class="cpp">
这题错了好多遍 不能开二维数组 不然内存会超限 10000!很大很大 数组开小也容易错 哎 一下午的时间弄出这题 心情很是复杂。。。。。
还有怎么才能标记计算到第几位来节省时间的问题 还是没想明白。。。。#include<stdio.h>
#include<string.h>
int a[40010];
int main()
{
int i,n,j,f,cn;
while(~scanf("%d",&n))
{
memset(a,0,sizeof(a));
if(n==0)
{
printf("1\n");
continue;
}
if(n==1)
{
printf("1\n");
continue;
}
a[0]=1;
for(j=2;j<=n;j++)
{ f=0;
for(i=0;i<=40000;i++)
{
a[i]=a[i]*j+f;
f=a[i]/10;
a[i]%=10;
}
}
i=39999;
while(a[i]==0)
i--;
for(;i>=0;i--)
printf("%d",a[i]);
printf("\n");
}
return 0;
}