文章
119
粉丝
68
获赞
90
访问
19.9k
#include <bits/stdc++.h>
using namespace std;
int main(){
int n;
int fac[11];
fac[0]=1;
fac[1]=1;
for(int i=2;i<=10;i++){
fac[i]=fac[i-1]*i;
}
while(cin>>n){
int i;
for(i=0;i<11;i++){
if(fac[i]>n){
i--;break;
}
}
int flag=0;
while(i>=0){
n-=fac[i--];
if(n==0){
flag=1;
break;
}
}
if(flag)cout<<"YES"<<endl;
else cout<<"NO"<<endl;
}
}
本题还是有点意思的,我们需要生成n!数组,注意,10!足矣,数据大小只有100w,然后我们就可以从大到小去减了,注意,我们是不允许重复使用阶乘的
登录后发布评论
暂无评论,来抢沙发