社区讨论

70pts,#8,9,10TLE求助

P7960[NOIP2021] 报数参与者 2已保存回复 1

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
1 条
当前快照
1 份
快照标识符
@lo3wguyv
此快照首次捕获于
2023/10/24 13:42
2 年前
此快照最后确认于
2023/11/02 11:36
2 年前
查看原帖
CPP
#include <bits/stdc++.h>
using namespace std;
const int X = 1e7 + 10;
int t, x;
bool num[X];

bool check(int x) {
	if (num[x] == 1)
		return 1;

	while (x > 0) {
		if (x % 10 == 7)
			return 1;
		else
			x /= 10;
	}

	return 0;
}

int main() {
	int site = 7;
	num[site] = 1;

	for (int i = 1; i * site <= X; i++)

		if (num[i * site] == 0)
			num[i * site] = 1;

	while (site <= X) {
		if (!num[site] && check(site) )
			for (int i = 1; i * site <= X; i++)

				if (num[i * site] == 0)
					num[i * site] = 1;
		site++;
	}

	scanf("%d", &t);

	for (int i = 1; i <= t; i++) {

		scanf("%d", &x);

		if (check(x) == 1)
			printf("-1\n");
		else {
			int z = x + 1;

			while (num[z] == 1)
				z++;
			printf("%d\n", z);
		}
	}

	return 0;
}

回复

1 条回复,欢迎继续交流。

正在加载回复...