#include <stdio.h>
#include <math.h>
/********阶乘********/ 
int factorial(int n)
{
    int product = 1;
    for( n; n > 0; n--)
        product *= n;
    return product;
}
int main(void) 
{   
    int i, j, k, l;
    int num, n, n_wei, sum;
    
    for(i = 1; i <= 9; i++)//将十万以内的数按首位数字分9类
    {
        for(j = 0; j < 5; j++)
        {
            n = i * pow(10, j); //分别将1,10,100,1000,10000,2,20作为起始数字
            for(k = 0; k < pow(10, j); k++) // 
            {
                num = n + k;
                sum = 0;
                while(num > 0)
                {
                    sum += factorial(num % 10); 
                    num /= 10;
                }
                if(sum == (n + k)) printf("%d ", n + k);//输出符合的阶乘和数
            }
        }
    }
	return 0;
}

有什么不懂的可以留言。

点赞(10)
 

0.0分

22 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 8 条评论

拂晓 1年前 回复TA
@飞越的心 就说对没对吧
2年前 回复TA
@飞越的心 6
王硕 2年前 回复TA
@飞越的心 jingmiao
飞越的心 3年前 回复TA
#include<stdio.h>
int main()
{
printf("1 145 2 40585");
return  0;
}
nctdream 4年前 回复TA
精妙精妙
0x90B94372 4年前 回复TA
#include<stdio.h>
int fun(int n)
{

	if (n == 0)
		return 1;
	else if (n == 1)
		return 1;
	else
		return n * fun(n - 1);
}
int main()
{
	int sum = 0, a, b, i,q;

	for (i = 1; i <= 100000; i++)
	{
		q = 1; sum = 0;
		b = i;
		while (q)
		{
		
			a = b % 10;
			b = b / 10;
			sum += fun(a);

			if (b == 0)
			{
				q = 0;
				if (sum == i)
				{
					printf("%d ", i);
					q = 0;
				}
			}
		}
	}
	
	return 0;
}
我这为什么错误
RioTian 5年前 回复TA
好尴尬,比我少了一半了
夷则廿一 5年前 回复TA
比我少一半代码