rt,有没有大佬知道这时什么问题,本地数据点都能过,但是交上去WA了,本地预处理跑了 600ms,但是交上去只跑了 40ms,估计是这一部分出的问题,但是不知道具体错在哪里了。
#include<math.h>
#include<time.h>
#include<stdio.h>
#include<algorithm>
#define int long long
#define M 10000000
inline bool Get(int x){
while(x){
if(x%10==7)
return true;
x=x/10;
}
}
int vis[M+100],p[M+100],cnt,pos[M+100];
inline void init(){
for(register int i=1;i<=M;++i){
if(vis[i]) continue;
if(i%7==0||Get(i)){
for(register int j=1;j*i<=M;++j){
if(vis[j*i]&&i%7==0)
break;
vis[j*i]=1;
} continue;
}
p[++cnt]=i;
pos[i]=cnt;
}
}int x;
inline void work(){
scanf("%lld",&x);
if(vis[x]){
puts("-1");
return;
}else printf("%lld\n",p[pos[x]+1]);
}signed main(){
srand(114514);
srand(rand());
srand(time(0));
// freopen(".in","r",stdin);
// freopen(".out","w",stdout);
init();
int T;scanf("%lld",&T);
while(T--) work();return 0;
}