阶乘之和--nyoj91

描述

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

输入
第一行有一个整数0<m<100,表示有m组测试数据;
每组测试数据有一个正整数n<1000000;
输出
如果符合条件,输出Yes,否则输出No;
样例输入
2
9
10
样例输出
Yes
No
 1 #include <stdio.h>
 2 int shu[9] = {1, 2, 6, 24, 120, 720, 5040, 40320, 362880};
 3 int main()
 4 {
 5     int m, n, i;
 6     scanf("%d", &m);
 7     while(m--){
 8 
 9             scanf("%d", &n);
10             i = 8;
11             while(i >= 0 && n > 0){
12 
13                     if(n - shu[i] >= 0)
14                     {
15                         n -= shu[i];
16                     }
17                     i--;
18 
19             }
20             if(n == 0)
21                 printf("Yes\n");
22             else
23                 printf("No\n");
24 
25     }
26     return 0;
27 }
28             
View Code


 

posted @ 2013-08-20 11:36  心中的阿哲  阅读(145)  评论(0编辑  收藏  举报