#include<iostream>
#include<cstring>
#define M 1000
using namespace std;
char fact[370][M];
void longFact(int n,char[]);
int main()
{
char num[M];
register int i,n,cdig[10];
//freopen("in.txt","r",stdin);
longFact(369,num);
while(scanf("%d",&n)&&n)
{
for(i=0;i<10;i++)cdig[i]=0;
for(i=0;fact[n][i];i++)cdig[fact[n][i]&15]++;
printf("%d! --\n (0)%5d",n,cdig[0]);
for(i=1;i<5;i++)printf(" (%d)%5d",i,cdig[i]);
printf("\n (5)%5d",cdig[5]);
for(i=6;i<10;i++)printf(" (%d)%5d",i,cdig[i]);
printf("\n");
}
return 0;
}
void longFact(int n,char num[])
{
int i,j,k,c,m;
for(i=0;i<M;i++)num[i]='\0';
num[0]='1';
for(i=1;i<=n;i++)
{
c=0,k=0;
for(j=0;num[j];j++)
{
m=(num[j]&15)*i+c;
num[k++]=(m%10)|48;
c=m/10;
}
while(c)
{
num[k++]=(c%10)|48;
c=c/10;
}
strcpy(fact[i],num);
}
}
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.