阶乘之和
时间限制:
3000 ms | 内存限制:
65535 KB
难度:
3
-
描述
-
给你一个非负数整数n,判断n是不是一些数(这些数不允许重复使用,且为正数)的阶乘之和,如9=1!+2!+3!,如果是,则输出Yes,否则输出No;
-
输入
-
第一行有一个整数0<m<100,表示有m组测试数据;
每组测试数据有一个正整数n<1000000;
输出
- 如果符合条件,输出Yes,否则输出No; 样例输入
-
2910
样例输出
-
YesNo
-
第一行有一个整数0<m<100,表示有m组测试数据;
01.
#include<stdio.h>
02.
#include<stdlib.h>
03.
#define maxn 1000000
04.
int
main()
05.
{
06.
int
a[11]={0,1};
07.
int
n,i,j,m,flag;
08.
09.
for
(i=2;i<=10;i++)
10.
a[i]=a[i-1]*i;
11.
// for(i=0;i<=10;i++)
12.
// printf("%d ",a[i]);
13.
14.
scanf
(
"%d"
,&n);
15.
while
(n--)
16.
{
17.
flag=0;
18.
scanf
(
"%d"
,&m);
19.
for
(i=10;i>=1;i--)
20.
{
21.
if
(m>a[i]) m=m-a[i];
22.
else
if
(m==a[i]) {flag=1;
break
;}
23.
else
continue
;
24.
}
25.
if
(flag)
26.
printf
(
"Yes\n"
);
27.
else
28.
printf
(
"No\n"
);
29.
30.
}
31.
// system("pause");
32.
return
0;
33.
}