北航计算机机试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);
}
这个就比较简单了,还用了递归–我可能还麻烦了一点