一个正整数如果等于组成它的各位数字的阶乘之和,该整数称为阶乘和数。 例如,145=1!+4!+5!,则145是一个三位阶详细和数。 请问:共有多少个阶乘和数?

#include 
#include 
void sort(char s[][15],int n)      //字符串排序
{
    char t[15];
    int i,j;
    for(i=0;i1;i++)
     for(j=0;j1-i;j++)
        if(strcmp(s[j],s[j+1])>0)
        {
            strcpy(t,s[j]);
            strcpy(s[j],s[j+1]);
            strcpy(s[j+1],t);
        }
}
void itoa(int n,char s[])       //把数字转化为字符串
{
    int i,j;
    char t;
    for(i=0;n;i++)
    {
        s[i]=n%10+'0';
        n/=10;
    }
    s[i]='\0';
    for(i=0,j=strlen(s)-1;iint a[10]={1},i,j=0,t,sum;       //a数组把1~9的阶乘存储起来
    char s[10][15];                     //假设最多有10个数
    for(i=1;i<=9;i++)
        a[i]=a[i-1]*i;
    for(i=1;i<=1000000;i++)
    {
        sum=0;
        for(t=i;t;t/=10)
            sum+=a[t%10];
        if(i==sum)              //如果成立把这些数存储起来,
            itoa(i,s[j++]);
    }
    sort(s,j);                      //然后排序输出
    for(i=0;iprintf("%s ",s[i]);
}

你可能感兴趣的:(编程分类)