623 - 500!

#include<stdio.h>
#include<string.h>
#define max 5005
#define length 3000
int fact[max][length];
void fact1()
{
    int i,j,rem=0;
    fact[0][0]=1;
    fact[1][0]=1;
    for(i=2;i<max;i++)
    {
        for(j=0;j<length;j++)
        {
            fact[i][j]=(fact[i-1][j]*i)+rem;
            rem=0;
            if(fact[i][j]>9)
            {
                rem=fact[i][j]/10;
                fact[i][j]=fact[i][j]%10;
            }
        }
    }

}
int main()
{

    int i,n;
    fact1();
    while(scanf("%d",&n)==1)
    {
        for(i=length-1;i>=0;i--)
        {
            if(fact[n][i]!=0)
            {
                break;
            }
        }
        printf("%d!\n",n);
        for(;i>=0;i--)
        {
            printf("%d",fact[n][i]);
        }
        printf("\n");
    }
    return 0;
}

0 comments: (+add yours?)