阶乘之和

 

阶乘之和

题目连接 http://acm.nyist.net/JudgeOnline/problem.php?pid=91

时间限制: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

 
View Code
 1 #include <iostream>
 2 #include <cstdio>
 3 using namespace std;
 4 
 5 int main()
 6 {
 7     int n,i,a[10],sum=1;a[0]=0;
 8     for(i=1;i<10;i++)
 9     {
10         sum*=i;
11         a[i]=sum;
12         //cout<<a[i]<<endl;
13     }
14     cin>>n;
15     int m,t;
16     while(n--)
17     {
18          cin>>m;
19          t=m;
20          for(i=9;i>0;i--)
21          {
22              t=t-a[i];
23              if(t==0) break;
24              else if(t<0)
25              {
26              t=t+a[i];
27              }
28          }
29          if(t==0) cout<<"Yes"<<endl;
30          else cout<<"No"<<endl;
31     }
32     return 0;
33 }
 
原文地址:https://www.cnblogs.com/wujianwei/p/2581863.html