http://acm.nyist.net/JudgeOnline/problem.php?pid=91
阶乘的分布:i的阶乘>sum{j的阶乘 | j=1,2,...,i-1}
#include<iostream> #include<cstdio> #include<algorithm> #include<cmath> #include<cstring> #include<string> using namespace std; int main() { int t,n,i,j; int re[10]={1,1,2,6,24,120,720,5040,40320,362880}; scanf("%d",&t); while(t--) { scanf("%d",&n); for(i=9;i>0;i--) if(n>=re[i]) n-=re[i]; if(!n) puts("Yes"); else puts("No"); } return 0; }