| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
想不明白为什么错了呢,有人帮忙看一下吗?相当直观的想法阿。。#include <iostream>
#include <set>
#include <vector>
using namespace std;
int factorials[10];
set<int> s;
vector<int> v;
int main(){
int i=0;
factorials[0]=1;
for(i=1; i<=9; i++){
factorials[i] = factorials[i-1]*i;
}
s.insert(factorials[1]);
set<int>::iterator it;
for(i=2; i<=9; i++){
v.clear();
for(it=s.begin(); it!=s.end(); it++){
v.push_back(*it+factorials[i]);
}
s.insert(v.begin(),v.end());
s.insert(factorials[i]);
}
int n=0;
while(true){
cin >> n;
if(n<0) break;
if(n>409113){ //这个是最大的。。9!+。。。+1!
cout << "NO" << endl;
continue;
}
if(s.find(n)!=s.end())
cout << "YES" << endl;
else
cout << "NO" << endl;
}
return 0;
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator