我不会


私信TA

用户名:NWK

访问量:1483

签 名:

等  级
排  名 9532
经  验 1150
参赛次数 2
文章发表 3
年  龄 0
在职情况 学生
学  校 洛阳师范学院
专  业

  自我简介:

解题思路:结合了几个题解可以参考

注意事项:

参考代码:

#include<stdio.h>

#include <math.h>

int fun(int);

int main()

{

    int i,n,num,k,j;

     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;

        if(fun(num))

            printf("%d ", num);


}}}}

int fun(int n) //判断当前数是否是阶乘和数

{

    int sum = 0;

    int m;

    int i;

    int j;  //储存每位数

    int k;  //当前位数的阶乘

    m = n;

    while(1)

    {

        k = 1;

        j = m%10; //依次取个位数

        m = m/10; //消去个位,方便下次取数

        for(i=1; i<=j; i++)

        {

            k = k*i;

        }

        sum = sum + k;

        if(m == 0)  //终止循环

            break;

    }

    if(sum == n)

        return 1;

    else return 0;

}


 

0.0分

0 人评分

  评论区

  • «
  • »