91:阶乘之和

描述

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

 
输入
第一行有一个整数0<m<100,表示有m组测试数据;
每组测试数据有一个正整数n<1000000;
输出
如果符合条件,输出Yes,否则输出No;
样例输入
2
9
10
样例输出
Yes
No

思路:10的阶乘大于1000000,建立数组存储1-9的阶乘进行比对

 1 import java.util.Scanner;
 2 public class Main {
 3     public static void main(String[] args){
 4         Scanner scan=new Scanner(System.in);
 5         int time=scan.nextInt();
 6         int temp=1;
 7         int[] arry=new int[9];
 8         for(int i=1;i<10;i++){
 9             temp*=i;
10             arry[i-1]=temp;
11         }
12         
13         while(time>0){
14             int num=scan.nextInt();
15             
16             for(int i=8;i>=0;i--){
17                 if(num>=arry[i]){
18                     num=num-arry[i];
19                 }
20             }
21             
22             if(num==0){
23                 System.out.println("YES");
24             }
25             else{
26                 System.out.println("NO");
27             }
28             time--;
29         }
30     }
31 }

 




posted @ 2017-12-09 23:45  小走神  阅读(367)  评论(0)    收藏  举报