只改变了数组声明的顺序,一个ac一个有几个数据点没过
查看原帖
只改变了数组声明的顺序,一个ac一个有几个数据点没过
853956
caiGouCaiJi楼主2023/6/9 23:33
#include<iostream>
#include<algorithm>
using namespace std;

const int N = 200010;

//这里改成int  r[N],has[N],ans[N];就错了几个数据点,我不理解啊
int  r[N],ans[N],has[N];

int n , m , t;
int main() {
    //ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
    cin >> n >> m;
    int flag=0;
    for (int i = 0;i < n;i++){
        cin >> r[i];
        if(has[r[i]]==1)flag=1;
        has[r[i]]=1;
    }
    if(flag)ans[1]=1;
    for(int i=1;i<N;i++){
        if(has[i]){
            for(int j=i<<1;j<=N;j+=i){
                if(has[j])ans[j/i]=1;
            }
        }
    }
    while(m--){
        cin>>t;
        if(ans[t])cout<<"YES"<<endl;
        else cout<<"NO"<<endl;
    }
    
    
    return 0;
}
2023/6/9 23:33
加载中...