一个正整数,如果等于组成它的各位数字的阶乘之和,则该正整数称为阶乘和数。例 如正整数145,1!+4!+5!等于145,因此145是一个阶乘和数。输入一个正整数,计算它的 各位数字的阶乘之和,判断它是否是一个阶乘和数。当输入的数字为阶乘和数时,输出 “YES”,否则输出“NO”。
时间: 2023-10-30 16:12:20 浏览: 259
算法1:
1. 用一个变量sum来记录各位数字的阶乘之和,初始值为0。
2. 用一个变量n来记录输入的正整数。
3. 循环计算n的各位数字的阶乘,并加到sum上。
4. 判断sum是否等于n,如果相等输出“YES”,否则输出“NO”。
时间复杂度:O(log n)
算法2:
1. 用一个数组factorial来记录0~9的阶乘值。
2. 用一个变量n来记录输入的正整数。
3. 循环计算n的各位数字的阶乘之和sum,并判断sum是否等于n,如果相等输出“YES”,否则输出“NO”。
时间复杂度:O(log n)
代码1:
```python
def is_factorial_sum(n):
sum = 0
temp = n
while temp > 0:
digit = temp % 10
fact = 1
for i in range(1, digit+1):
fact *= i
sum += fact
temp //= 10
if sum == n:
return "YES"
else:
return "NO"
```
代码2:
```python
def is_factorial_sum(n):
factorial = [1, 1, 2, 6, 24, 120, 720, 5040, 40320, 362880]
sum = 0
temp = n
while temp > 0:
digit = temp % 10
sum += factorial[digit]
temp //= 10
if sum == n:
return "YES"
else:
return "NO"
```
阅读全文