[Hồ Chí Minh - TS10 - 2025] Bài 2: LUCKYNUM

Xem dạng PDF

Gửi bài giải

Điểm: 20,00 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 1G
Input: stdin
Output: stdout

Dạng bài
Ngôn ngữ cho phép
C, C++, Java, Output Only, Pascal, PyPy, Python, Scratch, TEXT

Đề được tóm tắt bởi bạn Phan Thành Hưng.

Cho ba số nguyên dương ~L~, ~R~ và ~P~.

Cặp số ~(i, j)~ được gọi là may mắn nếu ~i \times j~ có tận cùng là ~P~, đồng thời ~L \le i, j \le R~.

Hãy đếm số lượng cặp số may mắn.

INPUT

Ba số nguyên ~L~, ~R~ và ~P~ (~1 \le L \le R \le 10^9~, ~0 \le P \le 9~).

OUTPUT

Số cặp số may mắn.

SAMPLE INPUT

1 4 4

SAMPLE OUTPUT

3

Các cặp may mắn là ~(1, 4)~, ~(2, 2)~, ~(4, 1)~.

SUBTASKS

Subtask Điểm Ràng buộc
1 ~35~ ~R \le 1000~.
2 ~15~ ~R \le 10^6~, ~P = 5~.
3 ~15~ ~P = 5~.
4 ~35~ Không có ràng buộc gì thêm.

Bình luận

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



  • 0
    manhquan1  đã bình luận lúc 29, Tháng 6, 2026, 9:22

    include <bits/stdc++.h>

    using namespace std;

    define ll long long

    ll dem(ll x, int d){ if(x <= 0) return 0; if(d == 0) return x / 10; return (x + (10 - d)) / 10; }

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

    ll L, R;
    int P;
    cin >> L >> R >> P;
    
    ll cnt[10];
    
    for(int i = 0; i < 10; i++){
        cnt[i] = dem(R, i) - dem(L - 1, i);
    }
    
    ll ans = 0;
    
    for(int i = 0; i < 10; i++){
        for(int j = 0; j < 10; j++){
            if((i * j) % 10 == P){
                ans += cnt[i] * cnt[j];
            }
        }
    }
    
    cout << ans;
    return 0;
    

    }