当没有两个数相同时,1倍是NO。但提供的数据却是YES
#include <bits/stdc++.h>
using namespace std;
const int N=2e5+10;
int num[N];
bool ans[N];
int main(){
int n,Q;cin>>n>>Q;
for(int i=1;i<=n;i++){int t;cin>>t;num[t]++;}
for(int i=1;i<=n;i++){
if(num[i]==0) continue;
if(num[i]>=2)ans[1]=true;
for(int j=2;j*i<N;j++)
if(num[j*i]) ans[j]=true;
}
while(Q--){
int q;cin>>q;
cout<<(ans[q]?"YES":"NO")<<endl;
}
return 0;
}
将第13行 改为 ans[1]=true;就AC了