hdoj 5665 Lucky 【水】

来源:互联网 发布:vb正则表达式在线测试 编辑:程序博客网 时间:2024/06/11 21:48

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
112
 

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;}


0 0