10000!求1000!正确到10000就错,求改
#include <stdio.h>
void main()
{
long i,j,b,c,h;
while(scanf(\"%ld\",&b)!=EOF)
{
if(b==0)
printf(\"0\n\");
else{
long a[100000]={0};
a[0]=1;
for(i=1,j=0;i<=b;i++)
{
for(h=j;h>=0;h--)
{
a[h]*=i;
if(a[h]>=10000)
{
c=a[h];
a[h]=a[h]%10000;
a[h+1]+=c/10000;
if(h+1>j)
j++;
}
}
}
printf(\"%ld\",a[j--]);
for(;j>=0;j--)
{
if(a[j]<1000&&a[j]>=100)
printf(\"0\");
if(a[j]<100&&a[j]>=10)
printf(\"00\");
if(a[j]<10)
printf(\"000\");
printf(\"%ld\",a[j]);
}
printf(\"\n\");
}
}
}