Số thân thiện

View as PDF

Submit solution


Points: 0.05 (partial)
Time limit: 0.38s
Memory limit: 512M
Input: stdin
Output: stdout

Problem source:
Sec. 9 Team Selection Test, District I HCMC, 2008
Problem types
Allowed languages
C, C++, Go, Java, Kotlin, Pascal, PyPy, Python, Rust, Scratch

Số tự nhiên có rất nhiều tính chất thú vị. Ví dụ với số 23, số đảo ngược của nó là 32. Hai số này có ước chung lớn nhất là 1. Những số như thế được gọi là số thân thiện, tức là số 23 được gọi là số thân thiện, số 32 cũng được gọi là số thân thiện.

Hãy nhập vào 2 số nguyên ~a~, ~b~ (~10 \leq a \leq b \leq 30000~). Hãy đếm xem trong khoảng từ ~a~ đến ~b~ (kể cả ~a~ và ~b~) có bao nhiêu số thân thiện.

Input

Bao gồm một dòng chứa 2 số ~a~, ~b~. Hai số được cách nhau bằng một khoảng trắng.

Output

Bao gồm một dòng là kết quả của bài toán.

Sample Input

20 30

Sample Output

3

Comments

Please read the guidelines before commenting.



  • 0
    lanMX  commented on Jan. 20, 2026, 10:30 a.m.

    có cách nào tối ưu khi b<=10^6 không mn


  • 0
    HuyDVC234  commented on Nov. 11, 2025, 8:33 a.m.

    include<bits/stdc++.h>

    using namespace std; long long n; long long Pow(int a, int b){ long long kq = 1; for(int i = 0; i < b; i++){ kq = a; } return kq; } long long Dao(long long n){ vector<int> f; int tam; while(n){ tam = n%10; n /= 10; f.push_back(tam); } tam = 0; reverse(f.begin(), f.end()); for(int i = 0; i < f.size(); i++){ tam += f[i]Pow(10,i); } return tam; } int main(){ int a, b, dem=0; cin >> a >> b; for(long long i = a; i <= b; i++) if(__gcd(i, Dao(i))==1) dem++; cout << dem; }


  • 0
    vominhmanh10  commented on Nov. 3, 2025, 4:04 a.m. edit 2

    đơn giản không:))

    import sys
    from math import gcd
    
    data = sys.stdin.read().split()
    
    def f(x):
        return int(str(x)[::-1])
    def main():
        a, b = map(int, data)
        cnt = 0
        for x in range(a, b + 1):
            if gcd(x, f(x)) == 1:
                cnt += 1
        print(cnt)
    main()