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;
}