这数据有点问题吧?
查看原帖
这数据有点问题吧?
288385
ZSFZ楼主2021/11/20 18:00

怎么说我的第一个测试点也能过吧?

#include <bits/stdc++.h>
#define ll long long
using namespace std;
// YN-0077
ll read(){
	char c = getchar();
	while (!(c >= '0' && c <= '9')) c = getchar();
	ll ret = 0;
	while (c >= '0' && c <= '9'){
		ret = ret * 10 + (c - '0');
		c = getchar();
	}
	return ret;
}
bool f[10000010];
ll nxt[10000010];

bool check(ll n){
	ll num1 = n;
	while (num1){
		if (num1 % 10 == 7) return false;
		num1 /= 10;
	}
	return true;
}
int main(){
	//freopen("number.in", "r", stdin);
	//freopen("number.out", "w", stdout);
	for (ll i = 0; i <= 10000000; i++){
		f[i] = 1;
	}
	ll tot = 0;
	nxt[0] = 1;
	for (ll i = 1; i <= 10000000; i++){
		if (!f[i]) continue;
		if (check(i)){
			nxt[tot] = i;
			tot = i;
			
		}else{
			for (ll j = i + i; j <= 10000000; j += i){
				f[j] = 0;
			}
		}
	}
	ll T;
	T = read();
	while (T--){
		ll n;
		n = read();
		if (!f[n]){
			printf("-1\n");
			continue;
		}
		printf("%lld\n", nxt[n]);
	}
	return 0;
}
2021/11/20 18:00
加载中...