fork download
  1. /**
  2.  * author: orzvanh14 ( Độc cô cầu đặc )
  3.  * Phân tích: O(1) sau khi đếm chữ số tận cùng.
  4. **/
  5. #include <bits/stdc++.h>
  6.  
  7. using namespace std;
  8.  
  9. #define int long long
  10. #define nn "\n"
  11.  
  12. // Hàm đếm số lượng số trong đoạn [1, X] có chữ số tận cùng là d
  13. int count_last_digit(int X, int d) {
  14. if (X < 0) return 0;
  15. if (d == 0) return X / 10;
  16. int count = X / 10;
  17. if (X % 10 >= d) count++;
  18. return count;
  19. }
  20.  
  21. void solve() {
  22. int L, R, P;
  23. if (!(cin >> L >> R >> P)) return;
  24.  
  25. int cnt[10];
  26. // Bước 1: Tính số lượng số tận cùng từ 0-9 trong [L, R]
  27. for (int d = 0; d <= 9; ++d) {
  28. cnt[d] = count_last_digit(R, d) - count_last_digit(L - 1, d);
  29. }
  30.  
  31. int total_pairs = 0;
  32.  
  33. // Bước 2: Duyệt tất cả các cặp chữ số tận cùng (i, j)
  34. for (int i = 0; i <= 9; ++i) {
  35. for (int j = 0; j <= 9; ++j) {
  36. // Bước 3: Nếu tích của chúng có tận cùng là P
  37. if ((i * j) % 10 == P) {
  38. total_pairs += cnt[i] * cnt[j];
  39. }
  40. }
  41. }
  42.  
  43. // Bước 4: Xuất kết quả
  44. cout << total_pairs << nn;
  45. }
  46.  
  47. signed main() {
  48. ios_base::sync_with_stdio(0);
  49. cin.tie(0);
  50. solve();
  51. return 0;
  52. }
Success #stdin #stdout 0s 5320KB
stdin
1
4
4
stdout
3