Hướng dẫn giải của HSG9 Cà Mau 2023 - Bài 3

Chỉ dùng lời giải này khi không có ý tưởng, và đừng copy-paste code từ lời giải này. Hãy tôn trọng người ra đề và người làm lời giải.


Nộp code mẫu trước khi tự giải được bài tập là một hành vi có thể bị ban.

Gợi ý

  • Dùng sàng nguyên tố để tìm ra những số nguyên tố trong khoảng từ ~10~ đến ~N~.
  • Với mỗi số nguyên tố ta kiểm tra tính đối xứng.

Code tham khảo

#include <bits/stdc++.h>

using namespace std;

const int N = 1e7 + 5;

int ok[N], n;
bool check(int x) {
    string s = to_string(x);
    for (int i = 0, j = s.size()-1; i < j; i++, j--) {
        if (s[i] != s[j]) return false;
    }
    return true;
}

void Solve() {
    memset(ok, 0, sizeof ok);
    for (int i = 2; i*i <= n; i++) {
        if (ok[i] == 0) {
            for (int j = i*i; j <= n; j += i)
                ok[j] = 1;
        }
    }

    for (int i = 10; i <= n; i++) {
        if (ok[i] == 1) continue;
        if (check(i)) cout << i << ' ';
    }
}

int main(){
    freopen("NGUYENTO.INP", "r", stdin);
    freopen("NGUYENTO.OUT", "w", stdout);
    cin >> n;
    Solve();
    return 0;
}

Bình luận

Hãy đọc nội quy trước khi bình luận.


Không có bình luận tại thời điểm này.