记录编号 567423 评测结果 AAAAAAAAAA
题目名称 [NOIP 2021]报数 最终得分 100
用户昵称 Gravatarzhk 是否通过 通过
代码语言 C++ 运行时间 1.715 s
提交时间 2021-11-28 11:07:53 内存使用 54.94 MiB
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
const int N=1e7+10;
inline int read()
{
	int l=0,w=1;char ch=getchar();
	while(ch>'9'||ch<'0') {if(ch=='-') w=-1;ch=getchar();}
	while(ch>='0'&&ch<='9') {l=l*10+ch-'0';ch=getchar();}
	return w*l;
}
inline void write(int x)
{
	if(x<0) {putchar('-');x=-x;}
	if(x>9) write(x/10);
	putchar(x%10+'0');
}
bool pd(int x)
{
	while(x)
	{
		int m=x%10;
		x/=10;
		if(m==7) return false;
	}
	return true;
}
bool v[N];
int a[N];
int nxt[N];
void pr(int x)
{
	int preI=0;
	for(int i=1;i<=x;i++)
	{
		if(!pd(i))
		{
			v[i]=true;nxt[i]=-1;
			for(int j=2;j<=x/i;j++)
			{
				v[j*i]=true;
				nxt[j*i]=-1;
			}
		}
		else{
			if(v[i]==false)
			{
				nxt[preI]=i;
				preI=i;
			}
		}
	}
}
int main()
{
	freopen("2021number.in","r",stdin);
	freopen("2021number.out","w",stdout);
	int t,maxx=0;
	t=read();
	
	for(int i=1;i<=t;i++)
	{
		a[i]=read();
		maxx=max(a[i],maxx);
	}
	maxx=min(maxx*2,N);
	memset(v,false,sizeof(v));
	pr(maxx);
	for(int i=1;i<=t;i++)
	{
		write(nxt[a[i]]);
		putchar('\n');
	}
	return 0;
}