最后3个点wa了
查看原帖
最后3个点wa了
544459
xhz_楼主2021/11/20 22:57
#include<bits/stdc++.h>
using namespace std;
int a[10000001],b[10000001],m,cnt=0;
int cmp(int num){
	while(num){
		if(num%10==7)return 1;
		num/=10;
	}return 0;
}
void f(){
	for(int i=1;i<=10000000;i++){
		if(!b[i]){
			if(cmp(i)){
				b[i]=1;
				for(int j=2;j*i<=10000000;j++){
					b[j*i]=1;
				}
			}else{
				a[++cnt]=i;
			}
		}
	}
}
int find(int num){
	int l=1,r=cnt,mid;
	while(l<r){
		mid=(l+r)>>1;
		if(a[mid]==num)return mid;
		else if(a[mid]<num)l=mid+1;
		else r=mid;
	}return l;
}
int main(){
	f();
	int n;cin>>n;
	for(int i=1;i<=n;i++){
		scanf("%d",&m);
		if(b[m]==1){
			printf("-1\n");continue;
		}
		printf("%d\n",a[find(m+1)]);
	}
	return 0;
}

为什么wa了?

2021/11/20 22:57
加载中...