Lucky
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 555 Accepted Submission(s): 328
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".
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 .
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解体思路:题目很水,主要是理解题意。 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.这句话的意思是说,对于一个集合S,如果里面的数通过相加,得不到的非负整数中最小的数为S的Lucky数,现在让你判断S的Lucky数是否存在。代码如下:#include<stdio.h> #include<string.h> int a[100010]; int main(){ int t,i,flag1,flag2,n; scanf("%d",&t); while(t--){ scanf("%d",&n); flag1=flag2=0; for(i=0;i<n;i++){ scanf("%d",&a[i]); if(a[i]==1){ flag1=1; } if(a[i]==0){ flag2=1; } } if(flag1&&flag2) printf("YES\n"); else printf("NO\n"); } return 0; }