include[HTML_REMOVED]
include[HTML_REMOVED]
include[HTML_REMOVED]
using namespace std;
int main() {
//首先建立一个数组把0-9所有的阶乘存起来
vector[HTML_REMOVED] arr;
int temp = 1;
arr.push_back(1);//存下0的阶乘
for (int i = 1; i <= 9; i) {
temp = temp * i;
arr.push_back(temp);
}
//再建立一个集合存下所有数的阶乘之和
set[HTML_REMOVED] ap;
ap.insert(0);
for (int i = 0; i <= 9; i) {
set[HTML_REMOVED]temp;
set[HTML_REMOVED]::iterator it;
for (it = ap.begin(); it != ap.end(); it) {
temp.insert(*it + arr[i]);
}
for (it = temp.begin(); it != temp.end(); it) {
ap.insert(*it);
}
}
ap.erase(0);
int n;
while (scanf(“%d”, &n) != EOF) {
if (n < 0)break;
if (ap.count(n) == 0) {
printf(“NO\n”);
}
else {
printf(“YES\n”);
}
}
//最后进行一下子判断即可
return 0;
}