NYOJ - 91:阶乘之和

阶乘之和

来源:NYOJ

标签:贪心算法

参考资料:

相似题目:

题目

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

输入

第一行有一个整数0 每组测试数据有一个正整数n<1000000;

输出

如果符合条件,输出Yes,否则输出No;

输入样例

2
9
10

输出样例

Yes
No

参考代码

#include
int f[9]={1,2,6,24,120,720,5040,40320,362880};
int main(){
	int T;
	scanf("%d",&T);
	while(T--){
		int m;
		scanf("%d",&m);
		int flag=0;
		for(int i=8;i>=0;i--){
			if(m>=f[i]){
				m-=f[i];
			}
			if(m==0){
				flag=1;
				break;
			}
		}
		if(flag)printf("Yes\n");
		else printf("No\n");
	}
	return 0;
}

你可能感兴趣的:(【记录】算法题解)