大数处理..目前来看..为了能应付每一位相互做乘法不越界同时又确保每一位被尽可能的使用..一位存4位数最优..其次..在运算范围比较大时候..当且大数的长度还是带着跑吧~
Program:
#include<iostream>
using namespace std;
int s[10005],i,j,n,k;
int main()
{
while (~scanf("%d",&n))
{
memset(s,0,sizeof(s));
s[0]=1; k=0;
for (i=2;i<=n;i++)
{
for (j=0;j<=k;j++)
s[j]*=i;
for (j=0;j<k;j++)
{
s[j+1]+=s[j]/10000;
s[j]%=10000;
}
while (s[k]>10000)
{
s[k+1]=s[k]/10000;
s[k]%=10000;
k++;
}
}
printf("%d",s[k]);
i=k-1;;
for (;i>=0;i--)
{
if (s[i]<1000) printf("0");
if (s[i]<100) printf("0");
if (s[i]<10) printf("0");
printf("%d",s[i]);
}
printf("\n");
}
return 0;
}