阶乘之和

来源:互联网 发布:linux系统有哪些 编辑:程序博客网 时间:2024/04/26 20:17

                                               阶乘之和

                                                    时间限制:3000 ms  |  内存限制:65535 KB
                                                                             难度:3
描述

给你一个非负数整数n,判断n是不是一些数(这些数不允许重复使用,且为正数)的阶乘之和,如9=1!+2!+3!,如果是,则输出Yes,否则输出No;

输入
第一行有一个整数0<m<100,表示有m组测试数据;
每组测试数据有一个正整数n<1000000;
输出
如果符合条件,输出Yes,否则输出No;
样例输入
2
9
10
样例输出
Yes
No
思路:刚开始的时候还以为很难,因为你<1000000,所以我就想列一下阶乘的数据,结果发现超水的题。
#include<iostream>using namespace std;int main(){int i,n,m;int a[15]={1,2,6,24,120,720,5040,40320,362880,409113};cin >> n;while (n--){cin >> m;if (m<=a[9]){for (i=8;i>=0&&m;--i){if (m-a[i]>=0){m-=a[i];}}}if (m==0){cout << "Yes" << endl;}else{cout << "No" << endl;}}return 0;}

0 0
原创粉丝点击