建议加强数据
查看原帖
建议加强数据
55828
Charisk_FOD楼主2021/11/22 16:48
#include<bits/stdc++.h>
using namespace std;
const int maxn=10001000;
int MAX;
int num[1000000];
int T,tot;
bool no[maxn];
int query[200010];
bool p(int x){
	int a=0;
	while(x){
		a=x%10;
		if(a==7) return 1;
		x/=10;
	}
	return 0;
}
void sf(int x){
	for(int i=1;i<=x;i++){
		if(no[i]==1) continue;
		if(!no[i]){
			if(p(i)){
				no[i]=1;
				for(int j=i+i;j<=x;j+=i){
					no[j]=1;
				}
			}
			else num[++tot]=i;
		}
	}
}
int main(){
//	freopen("number.in","r",stdin);
//	freopen("number.out","w",stdout);
	scanf("%d",&T);
	//for(int i=1;i<=100;i++) cout<<num[i]<<"\n";
	for(int i=1;i<=T;i++){
		scanf("%d",&query[i]);
		if(MAX<query[i]) MAX=query[i];
	}	
	sf(MAX+500);
	for(int i=1;i<=T;i++){
		if(no[query[i]]) printf("-1\n");
		else printf("%d\n",num[upper_bound(num+1,num+tot+1,query[i])-num]);
	}

	return 0;
}

这个程序在洛谷上AC , 399ms,14.61M

但是对以下问题输出错误

number.in

1
6999998

number.ans:

8000000

number.out:

0

请求加强数据


建议加入测试点: number.in:

200000
6999998
6999998
6999998
.
.
.

number.ans:

8000000
8000000
.
.
.
2021/11/22 16:48
加载中...