大红大绿求助
查看原帖
大红大绿求助
406941
Register_int-std=c++14楼主2021/11/20 20:24

rt。

#include <bits/stdc++.h>
using namespace std;
int nxt[11000010], t, x;
bool ban[11000010], vis[11000010]; 
void getban(int n) {
	for (int i = 1; i <= n; i++) {
		ban[i] = (ban[i] || ban[i / 10] || i % 10 == 7);
		if (ban[i] && !vis[i]) {
			for (int j = i; j <= n; j += i) vis[j] = ban[j] = 1;
		}
	}
}
void getnext(int n) {
	for (int i = n; i; i--) {
		if (ban[i + 1]) nxt[i] = nxt[i + 1];
		else nxt[i] = i + 1;
	}
}
int main() {
	//freopen("number.in", "r", stdin);
	//freopen("number.out", "w", stdout);
	getban(10001000);
	getnext(10001000);
	scanf("%d", &t);
  	while (t--) {
		scanf("%d", &x);
		if (ban[x]) puts("-1");
		else printf("%d\n", nxt[x]);
	}
}
2021/11/20 20:24
加载中...