题意简化为给你一个集合,集合里面的数均为非负整数,问你这个集合的数通过加法(1个数可以用多遍)能否得到任意自然数。
其实就是判断集合里面是否有1,,~~但是这里有个小坑就是还要判断是否有0的情况,,(当初我认为自然数是没有0的,所以BC上就被Hack了。。)
代码如下:
#include <algorithm>
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <string>
#include <cstdio>
#include <climits>
#include <cmath>
using namespace std;
int data[100005];
int main(){
#ifdef DID
freopen("in.txt","r",stdin);
//freopen("out.txt","w",stdout);
#endif
int T;
scanf("%d",&T);
while(T--){
int n;
bool true0=0,true1=0;
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%d",&data[i]);
if(data[i]==0) true0=1;
else if(data[i]==1) true1=1;
}
if(true0&&true1)
printf("YES\n");
else
printf("NO\n");
}
return 0;
}