Thành phố Hà Nội có một số linh vật được đánh số thứ tự từ A đến B (A,B là hai số nguyên dương A<=B) . Lãnh đọa thành phố quyết định đấu giá những con linh vật có số thứ tự đẹp để lấy tiền ủng hộ đồng bào lũ lụt miền trung . Một số thứ tự được gọi là số đẹp nếu nó thỏa mãn các điều kiện sau : - Là một số nguyên dương T mà A<=T<=B - T là một số nguyen tố - T là một số đối xứng ( đọc T từ trái sang phải giống như đọc T từ phải qua trái ) ví dụ 12321 là một số đối xứng Yêu cầu : cho hai số nguyên dương A và B (A<=B) , hãy tìm số linh vật có số thứ tự đẹp . Input : Tệp văn bàn AUCTION.INP gồm một dòng chứa hai số nguyên dương A và B ( 0<= A<=B<=10^9) Onput. Đưa ra tệp văn bản AUCTION.OUT gồm một số nguyên là số linh vật có số thứ tự đẹp Ví dụ : AUCTION.INP 11111 22222 AUCTION.OUT 23 viết bằng c++ hoặc pascal nếu có thể

2 câu trả lời

- Vì một số đối xứng có dạng: `\overline{ab..ba} (1)` hoặc `\overline{ab..x..ba} (2)`

Trường hợp (1):

+ Ta có thể tìm T = `\overline{ab..}` sau đó đảo T lại và ghép vào sau T

Trường hợp (2):

+ Làm tương tự t.hợp (1) nhưng chèn thêm 1 số x `(0 le x le 9)`

- Sau khi thực hiện xong ta kiểm tra xem T có là số nguyên tố và `a le T le b` là xong

*Lưu ý: bạn có thể sử dụng phép kiểm tra nguyên tố thường (mình dùng miller để giảm đpt) :)

- Code (85 dòng)

#include <iostream>
#include <cmath>
using namespace std;

typedef __int128 IT;
int a, b, res;

// ---------------------------------- // Phép kiểm tra từ đây :)
IT power(IT A, IT N, IT M) {
    IT ret = 1; A = A % M;

    while (N > 0) {
        if (N & 1) ret = ret * A % M;
        N >>= 1;
        A = A * A % M;
    }

    return ret;
}

bool check(IT A, IT s, IT d, IT N) {
    if (N == A) return true;
    IT p = power(A, d, N);
    if (p == 1) return true;

    for(; s > 0; s--) {
        if (p == N - 1) return true;
        p = p * p % N;
    }

    return false;
}

bool prime(IT x) {
    if (x <= 1) return false;
    if (x % 2 == 0) return x == 2;
    if (x % 3 == 0) return x == 3;

    IT d = x - 1, s = 0;
    while ((d & 1) == 0) {
        s++;
        d >>= 1;
    }

    for(IT i: {2, 7, 61})
        if (!check(i, s, d, x)) return false;

    return true;
}
// ------------------------------//

int rev(int x) {
    int r = 0;
    while (x) r *= 10, r += x % 10, x /= 10;
    return r;
}

int count(int x) {
    return log10(x) + 1;
}

bool check(int x) {
    if (a <= x && x <= b) {
        if (prime(x)) {
        //    cout << x << "\n";
            return 1;
        }
    }
    return 0;
}

void solve(int x) {
    int tmp = rev(x), c = pow(10, count(x));
    res += check(x * c + tmp);
    for (int i = 0; i < 10; ++i) res += check(x * c * 10 + i * c + tmp);
}

void gene() {
    for (int i = pow(10, count(b) / 2); i > 0; --i) solve(i);
}

int main() {
    cin >> a >> b;
    for (int i: {2, 3, 5, 7}) res += check(i);
    gene();
    cout << res;
}

#include<bits/stdc++.h>
using namespace std;
int doixung(int n)
{
   int t=n;
   int dv,dn=0;
   while(t!=0)
   {
      dv=t%10;
      dn=dn*10+dv;
      t=t/10;
   }
   if(dn==n)
   return 1;
   return 0;
}
int nguyento(int n)
{
   if(n<2)return 0;
   for(int i=2;i<=sqrt(n);i++)
   if(n%i==0)
   return 0;
   return 1;
}
int main()
{
   int a,b,dem=0;
   cin>>a>>b;
   for(int i=a;i<=b;i++)
   {
       if(nguyento(i) && doixung(i)) dem++;
   }
   cout<<dem;
   return 0;
}

Câu hỏi trong lớp Xem thêm

giup e voi I/ Supply the correct form of the verbs in brackets 1. You (think) ……………………… collecting stamps costs much money? 2. Every year, my mother (give) ……………………… me a nice doll on my birthday. 3. Jenny says she loves collecting pens but she (not/continue) ……………………… this hobby from next year. 4. If you wash your hands more, you (have)……………………. less chance of catching flu. 5. Getting plenty of rest is very good. It (help)…………………. you to avoid depression. 6. Mr. John (be) ……………………… principal of our school since last year. 7. I (see) ……………………… a car accident on this corner yesterday. 8. We like (come)……………………to school by bus, but we hate (stand)………………………. and (wait) …………………… in the rain. 9. ……………………… (you/ ever/ meet) anyone famous? 10. My mother (come) ……………………… to stay with us next weekend. 11. When he lived in Manchester, he (work) ……………………… in a bank. 12. We (be) ……………………… students for four years. 13. We are planting trees around our school now. Our school (be) ……………………… surrounded by a lot of green trees. 14. What ……………………… your father usually ……………………… (do) in the evenings? 15. My sister likes (cook) ……………………… very much. She can cook many good foods. 16. My father says when he's retired, he (go) …………………… back to his village to do the gardening. 17. They want (buy) ……………………… some meat for dinner. 18. Linh is my best friend. We (know) ……………………… each other for 5 years. 19. I enjoy (fish) ……………………… because it is relaxing. 20. How about (go) ……………………… to the movie theatre?

3 lượt xem
1 đáp án
18 giờ trước