样例过了,为啥10个点都T了?
#include<bits/stdc++.h>
#define MAXN 1000001
#define int long long
using namespace std;
bool vis[MAXN*10];
int T,a[MAXN];
inline bool check(int x)
{
while(x)
{
if(x%10==7) return 1;
x/=10;
}
return 0;
}
inline void fuck()
{
for(int i=7;i<=10000000;i++)
{
if(!vis[i])
{
vis[i]=check(i);
if(vis[i])
for(int j=2;i*j<=10000000;j++)
vis[i*j]=1;
}
}
return;
}
signed main()
{
scanf("%lld",&T);
for(int i=T;i;i--)
scanf("%lld",&a[i]);
fuck();
for(int i=1;;i++)
{
if(i==a[T])
{
if(vis[i])
printf("-1\n");
else
for(int j=i+1;;j++)
if(!vis[j])
{
printf("%lld\n",j);
break;
}
T--;
if(!T) return 0;
}
}
}