数学解法:
#数学解法
n=eval(input())
x=len(str(n))#判断位数
num=1
c=0
b=1
for i in range(1,x+1):#计算n的每位数
a=n//pow(10,x-i)%10
b=1
for j in range(1,a+1):#计算阶乘
b = b * j
c=c+b
if c==n:#比较累计阶乘与原数值
print('Yes')
else:
print('No')
索引解法:
#索引解法
n=eval(input())
x=len(str(n))
d=0
for i in range(0,x):
a=str(n)
b=int(a[i])
c=1
for j in range(1,b+1):
c=c*j
d=d+c
if d==n:
print('Yes')
else:
print('No')