蒟蒻求问
查看原帖
蒟蒻求问
210915
bluedoor418楼主2021/11/20 18:24

样例过了,为啥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;
		}
	}
}
2021/11/20 18:24
加载中...