北航计算机机试14阶乘数

输入一个正整数,输出时,先输出这个数本身,跟着一个逗号,再输出这个数的各位数字的阶乘和,等号,阶乘和的计算结果,并判断阶乘和是否等于原数,如果相等输出Yes,否则输出No。题目说明输入的正整数以及其各位阶乘和都不会超出int型的表示范围。
输入样例1:
145
输出样例1:
145,1!+4!+5!=145
Yes
输入样例2:
1400
输出样例2:
1400,1!+4!+0!+0!=27
No

code

#include <stdio.h>


int exp(int j);
int main()
{
    int s,S;

    while (scanf_s("%d", &s) != EOF)
    {
        int sum = 0;
        S = s;
        printf("%d,", s);
        while (s != 0)
        {
            int j = s % 10;
            sum += exp(j);
            s / 10 != 0 ? printf("%d!+", j) : printf("%d!", j);
            s = s / 10;
        }
        printf("=%d", sum);
        S - sum == 0 ? printf("YES\n") : printf("NO\n");
    }
    return 0;
}


int exp(int j)
{
    if (j == 0||j==1) return 1;
    else if (j == 2) return 2;
    else 
        return j*exp(j-1);
}

这个就比较简单了,还用了递归–我可能还麻烦了一点

全部评论

相关推荐

学不完不睡觉11:一眼点评,不过,看运气吧
点赞 评论 收藏
分享
01-21 12:26
暨南大学 golang
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务