hdoj 5665 Lucky 【水】

Lucky

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 554    Accepted Submission(s): 327


Problem Description
     Chaos August likes to study the lucky numbers.

     For a set of numbers S,we set the minimum non-negative integer,which can't be gotten by adding the number in S,as the lucky number.Of course,each number can be used many times.

     Now, given a set of number S, you should answer whether S has a lucky number."NO" should be outputted only when it does have a lucky number.Otherwise,output "YES".
 

Input
     The first line is a number T,which is case number.

     In each case,the first line is a number n,which is the size of the number set.

     Next are n numbers,means the number in the number set.

    1n105,1T10,0ai109 .
 

Output
     Output“YES”or “NO”to every query.
 

Sample Input
  
  
1 1 2
 

Sample Output
  
  
NO
 

Source
 

Recommend
wange2014   |   We have carefully selected several similar problems for you:   5674  5673  5672  5671  5670 
 

Statistic |  Submit |  Discuss |  Note

代码:
//这道题的意思太难理解了!
/*
    在给定的集合s中,通过相加,不能够得到的最小非负整数为幸运数,如果不存在幸运数,输出YES;
	否则输出NO; 
技巧:如果这个集合里面没有0的话,0肯定不能通过其他的数相加得到,所以0必须有,如果没有
1的话,其他的数进行加的话1肯定不能够得到,所以1也必须有,其他的数都可以通过0和多个1相加得到,所以
只要这个集合有0和1就能组成所有的非负整数,就不存在幸运数了! 
*/ 
#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
int a[100005];
int main()
{
	int T;
	scanf("%d",&T);
	while(T--)
	{
		int n;
		scanf("%d",&n);
		int flag1=0,flag2=0;
		for(int i=0;i<n;i++)
		{
			scanf("%d",&a[i]);
			if(a[i]==0)
			{
				flag1=1;
			}
			if(a[i]==1)
			{
				flag2=1;
			}
		}
		if(flag1&&flag2)
		{
			printf("YES\n");
		}
		else
		{
			printf("NO\n");
		}
	}
	return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值