题干
c语言实现
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<vector>
#include<set>
using namespace std;int main() {vector<int> factorialArr;factorialArr.push_back(1);int curFactorial = 1;for (int i = 1; i < 10; i++) {curFactorial = curFactorial * i;factorialArr.push_back(curFactorial);}set<int> allPossible; allPossible.insert(0);for (int i = 0; i < 10; i++){set<int> temp;set<int>::iterator it;for (it = allPossible.begin(); it != allPossible.end(); ++it) {temp.insert(*it + factorialArr[i]);}for (it = temp.begin(); it != temp.end(); ++it) {allPossible.insert(*it);}}allPossible.erase(0);int n;while (scanf("%d", &n) != EOF) {if (n < 0) {break;}if (allPossible.count(n) == 0) {printf("NO\n");}else {printf("YES\n"); }}return 0;
}