第一个数据点有问题
查看原帖
第一个数据点有问题
64419
cat98132楼主2022/12/6 22:05

当没有两个数相同时,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;//如果值越过两个说明1位可行 
		for(int j=2;j*i<N;j++) //预处理多少倍可行 
			if(num[j*i]) ans[j]=true;//如果j倍也存在说明可行 
	}
	while(Q--){
		int q;cin>>q;//输入倍数 
		cout<<(ans[q]?"YES":"NO")<<endl;
	}
	return 0;
} 

将第13行 改为 ans[1]=true;就AC了

2022/12/6 22:05
加载中...