NYOJ - 阶乘之和

阶乘之和

时间限制: 3000 ms  |           内存限制: 65535 KB
难度:3
描述

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

输入
第一行有一个整数0 每组测试数据有一个正整数n<1000000;
输出
如果符合条件,输出Yes,否则输出No;
样例输入
2
9
10
样例输出
Yes
No
 
      
#include 
int main()
{
	int n,m;
	int a[9]={1,2,6,24,120,720,5040,40320,362880};
	scanf("%d",&n);
	while(n--)
	{
		scanf("%d",&m);
		int sign = 0;
		for(int i = 8; i >= 0; i--)
		{
			if(m > a[i])
			{
				m -= a[i];
			}
			else if(m == a[i])
			{
				printf("Yes\n");
				sign = 1;
			}
			else
			{
				continue;
			}
		}
		if(!sign)
		printf("No\n");
	}
}

你可能感兴趣的:(模拟)