本机第五个点是过的,洛谷上WA了,求调
查看原帖
本机第五个点是过的,洛谷上WA了,求调
579035
slzx2021zjx楼主2022/11/6 09:28

本机第五个点是过的,洛谷上WA了,求调

#include<bits/stdc++.h>
#define int long long
using namespace std;
inline int read(){
	int f=1,s=0;char ch=getchar();
	while(ch<'0'||ch>'9'){if(ch=='-') f=-1;ch=getchar();}
	while(ch>='0'&&ch<='9'){s=(s<<1)+(s<<3)+(ch^48);ch=getchar();}
	return f*s;
}
inline void write(int x){
	if(x<0){putchar('-');x=-x;}
	if(x>9) write(x/10);
	putchar(char(x%10+'0'));
}
int T,x,num[20000000],m;
bool a[20000000];
bool check(int x)
{
	while(x){
		if(x%10==7) return 1;
		x/=10;
	}
	return 0;
}
signed main()
{
	for(int i=1;i<=20000000;i++){
		if(a[i]) continue;
		else if(check(i)){
			for(int j=1;j<=20000000/i;j++){
				a[i*j]=1;
			}
		}
		else num[++m]=i;
	}
	T=read();
	while(T--){
		x=read();
		if(a[x]) puts("-1");
		else{
			int l=1,r=m,ans=0;
			while(l<=r){
				int mid=(l+r)>>1;
				if(num[mid]>x) r=mid-1;
				else if(num[mid]==x){ans=mid;break;}
				else if(num[mid]<x) l=mid+1;
			}
			write(num[ans+1]);puts("");
		}
	}
//	double A=sizeof(a);
//	printf("%.10f",A/1024/1024);
}
2022/11/6 09:28
加载中...