nyist-91上面的贪心算法一类的,思路比较简单,直接贴一下代码吧!
#include <stdio.h> #include <iostream> using namespace std; int a[9]={1,2,6,24,120,720,5040,40320,362880}; //只需要到a9就可以了,因为第十个超过了数的范围。 int main() { int m,n; int i; //m表示测试的次数,n表示输入的数字;int的范围比较大,可以容纳1000000; cin >> m; while(m--) { cin >> n; for(i = 8; i >= 0; i--) { if(n-a[i] >= 0) n = n-a[i]; } if( n == 0) cout << "yes" << endl; else cout << "no" << endl; } return 0; }
本文出自 “我的算法笔记” 博客,谢绝转载!
原文:http://liu168ad.blog.51cto.com/7511123/1391909