NPALIN2 - Số đối xứng 2

Xem dạng PDF

Gửi bài giải


Điểm: 1,00 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M

Tác giả:
Dạng bài
Ngôn ngữ cho phép
C, C#, C++, Go, Java, Pascal, Perl, PHP, PyPy, Python, Ruby, Rust, Scratch, Swift

Một số nguyên dương được gọi là số đối xứng nếu khi viết các chữ số của nó (trong hệ thập phân) theo thứ tự ngược lại ta vẫn được chính số đó.

Cho hai số nguyên dương ~l, r~, đếm xem có bao nhiêu số đối xứng trong đoạn ~[l, r]~.

Input

  • Gồm nhiều dòng, mỗi dòng ghi hai số nguyên dương ~l, r~ cách nhau bởi dấu cách.

Giới hạn:

  • Mỗi bộ test có không quá ~10^3~ dòng
  • ~1≤l≤r≤10^{15},r-l≤10^5~

Output

  • Với mỗi cặp số ~l, r~, in ra trên một dòng số lượng số đối xứng trong đoạn ~[l, r]~.

Sample

Input #1
1 10
11 30
Output #1
9
2

Problem source: Chuyên Sơn La Online Judge


Bình luận

Please read the guidelines before commenting.



  • 1
    mducc  đã bình luận lúc 3, Tháng 6, 2026, 14:15

    hint

    Hàm dx(x): kiểm tra số đối xứng (palindrome).

    Chuyển số thành xâu.

    So sánh ký tự đầu và cuối, lặp vào trong.

    main:

    Đọc vô hạn các cặp l, r cho đến khi hết file.

    Với mỗi cặp, duyệt từ l đến r, đếm số đối xứng.

    In kết quả.

    code tham khảo (c++)

    #include <bits/stdc++.h>
    using namespace std;
    bool dx(long long x) {
        string s = to_string(x); 
        int l = 0, r = s.size() - 1; 
        while(l < r) {
            if(s[l] != s[r]) return false; 
            l++;
            r--;
        }
        return true;
    }
    int main() {
        ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
        long long l, r; 
        while(cin >> l >> r) {
            long long ans = 0; 
            for(long long i = l; i <= r; ++i) 
                if(dx(i)) ans++;
            cout << ans << '\n'; 
        }
    }
    

  • -2
    congtyluuthaibao1978  đã bình luận lúc 25, Tháng 11, 2025, 12:02

    include <bits/stdc++.h>

    using namespace std;

    bool isPalindrome(long long x) { string s = to_string(x); string t = s; reverse(t.begin(), t.end()); return s == t; }

    int main() { ios::syncwithstdio(false); cin.tie(nullptr);

    long long l, r;
    while (cin >> l >> r) {
        int cnt = 0;
        for (long long x = l; x <= r; x++) {
            if (isPalindrome(x)) cnt++;
        }
        cout << cnt << "\n";
    }
    
    return 0;
    

    }