求优化,70分
查看原帖
求优化,70分
271803
over_caykl楼主2021/11/21 10:58
#include<bits/stdc++.h>
using namespace std;
int t,n;
bool bd[10010005];
int sum[10010005],k;
const int sj=10000010;
inline int read(){
	int x=0,f=1;char ch=getchar();
	while (ch<'0'||ch>'9'){if (ch=='-') f=-1;ch=getchar();}
	while (ch>='0'&&ch<='9'){x=x*10+ch-48;ch=getchar();}
	return x*f;
}
int main(){
/*	freopen("number.in","r",stdin);
	freopen("number.out","w",stdout);*/ 
	for(int i=1;i<=sj;i++){
		int t=i;
		int mod=10,ch=1;
		for(int j=1;j<=8;j++){
			t=i;
			t%=mod;t/=ch;
			if(t==7){
				bd[i]=1;
				sum[++k]=i;
				break;
			}
			mod*=10,ch*=10;
		}
	}
	for(int i=1;i<=k;i++){
		for(int j=2;sum[i]*j<=sj;j++){
			if(!bd[sum[i]*j])
				bd[sum[i]*j]=1;		
		}
	} 
	t=read();
	for(int i=1;i<=t;i++){
		n=read();
		if(bd[n]){
			printf("-1\n");
			continue;
		}
		for(int j=n+1;j<=sj;j++){
			if(!bd[j]){
				printf("%d\n",j);
				break;
			}
		}
	}
	return 0;
}
2021/11/21 10:58
加载中...