70分TLE求助
查看原帖
70分TLE求助
977890
nanami0721楼主2024/11/18 17:56

是因为预处理时间太长了吗

#include<bits/stdc++.h>
using namespace std;
long long t,x,ans[1000010],n,book1[10000110],nm=1,y,u,ti,b2[10000100],pd,u2,u3,u4;
int main(){
	cin>>t;
	for(long long i=7;i<=10000000;i++){
		pd=0;
		u=i;
		u2=i;
		if(b2[i]==1){
			continue;
		}
		while(u){
			if(u%10==7){
				book1[u2]=1;
				pd=1;
				break;
			}
			u=u/10;
		}
		if(pd==1){
			while(u2<10000000){
				b2[u2]=1;
				book1[u2]=1;
				u2=u2+i;
			}
		}
	}
	for(long long i=1;i<=t;i++){
		cin>>x;
		u3=x+1;
		if(book1[x]==1){
			ans[i]=-1;
		}
		else{
			while(book1[u3]==1){
				u3++;
			}
			ans[i]=u3;
		}
		cout<<ans[i]<<"\n";
	}
}
2024/11/18 17:56
加载中...