324 - Factorial Frequencies

#include<stdio.h>
#include<string.h>
#define max 5005
#define length 3000
int fact[max][length],arr[11];
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)
    {
        if(n==0)
        {
            break;
        }
        for(i=length-1;i>=0;i--)
        {
            if(fact[n][i]!=0)
            {
                break;
            }
        }
        printf("%d! --\n",n);
        for(;i>=0;i--)
        {
            if(fact[n][i]==0)
            {
                arr[0]++;
            }
            else if(fact[n][i]==1)
            {
                arr[1]++;
            }
            else if(fact[n][i]==2)
            {
                arr[2]++;
            }
            else if(fact[n][i]==3)
            {
                arr[3]++;
            }
            else if(fact[n][i]==4)
            {
                arr[4]++;
            }
            else if(fact[n][i]==5)
            {
                arr[5]++;
            }
            else if(fact[n][i]==6)
            {
                arr[6]++;
            }
            else if(fact[n][i]==7)
            {
                arr[7]++;
            }
            else if(fact[n][i]==8)
            {
                arr[8]++;
            }
            else if(fact[n][i]==9)
            {
                arr[9]++;
            }
        }
        printf("   (0)    %d    (1)    %d    (2)    %d    (3)    %d    (4)    %d\n",arr[0],arr[1],arr[2],arr[3],arr[4]);
        printf("   (5)    %d    (6)    %d    (7)    %d    (8)    %d    (9)    %d\n",arr[5],arr[6],arr[7],arr[8],arr[9]);
        memset(arr,0,sizeof(arr));
    }
    return 0;
}

0 comments: (+add yours?)