题解:CF568A Primes or Palindromes?
打表题。
看题一眼发现好像
所以考虑直接预处理
这里由于是
#include <bits/stdc++.h>
using namespace std;
int T;
int cnt[2000010], cnt1[2000010];
bool is(int u) {
string s = to_string(u), t = s;
reverse(t.begin(), t.end());
return s == t;
}
void init() {
for (int i = 1; i <= 2000000; ++i) cnt[i] = 1;
cnt[0] = cnt[1] = 0;
for (int i = 2; i <= 2000000; ++i) {
if (cnt[i]) {
for (int j = 2; i * j <= 2000000; ++j)
cnt[i * j] = 0;
}
}
for (int i = 1; i <= 2000000; ++i) cnt[i] += cnt[i - 1], cnt1[i] += cnt1[i - 1] + is(i);
}
int main() {
init();
int p, q; scanf("%d%d", &p, &q);
for (int n = 2000000; n >= 0; --n) {
if (cnt1[n] * p >= cnt[n] * q) {
printf("%d\n", n);
return 0;
}
}
return 0;
}