#include<iostream>
#include<cstdlib>
#include<cstdio>
#include<string>
#include<cmath>
#include<memory.h>
#include<iomanip>
using namespace std;
/*
1. 1!+2!+...+n!<(n+1)! if n >= (n+1)!, must contains (n+1)!
2. 0!=1, should be contained.
3. n=0 should be concentrated on
*/
int f[10];
bool isTrue(int n){
int sum = n;
int i = 9;
while(i>=0){
if(sum>=f[i]){
sum -= f[i];
if(sum==0)
return true;
}
i--;
}
return false;
}
int main(){
//freopen("in.txt", "r", stdin);
//freopen("out.txt", "w", stdout);
int n;
int tmp = 1;
f[0] = 1;
for(int i=1;i<10;++i){
tmp *= i;
f[i] = tmp;
}
while(cin>>n, n>=0){
if(isTrue(n))
printf("YES\n");
else
printf("NO\n");
}
//fclose(stdout);
//fclose(stdin);
}
Problem 1106 Sum of Factorials
最新推荐文章于 2021-02-07 15:16:34 发布