P2291 Prime prime power
观察:
鉴于
对于
发现尽管
因为你可能要把所有 set 当中,所以会导致复杂度多一个
#define int long long
signed main() {
int n, k;
cin >> n >> k;
int bnd = ceil(sqrt(n));
init(6e6);
for (int i = 1; i <= tot; i++) {
int now = 1;
for (int j = 1; ; j++) {
now *= primes[i];
if (p[j] == 0 && now > n) s.insert(now);
if (primes[i] > 1e18 / now) break;
}
}
for (int i = 1; i <= 10000; i++) {
if (bnd + i - 1 > 1e9) break;
if (pr(bnd + i - 1)) s.insert((bnd + i - 1) * (bnd + i - 1));
}
for (int i = 1; i < k; i++) s.erase(s.begin());
cout << *s.begin() << endl;
return 0;
}