您的位置:首页 > 其它

hdoj 5665 Lucky 【水】

2016-04-26 20:40 363 查看


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.

1≤n≤105,1≤T≤10,0≤ai≤109.

Output

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

Sample Input

1
1
2


Sample Output

NO


Source

BestCoder Round #80

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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: