Dang_Quan_10_Tin

DIGITX

Aug 20th, 2020
242
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.05 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdio>
  3. #include <vector>
  4. #include <algorithm>
  5. #define task "DIGITX"
  6. using namespace std;
  7. using ll = long long;
  8. using ld = long double;
  9.  
  10. const int N = 1e6 + 1;
  11. vector<int> s[10];
  12. int dp[N], l, r, k, q;
  13.  
  14. int Convert(int v)
  15. {
  16.     int ans = 1;
  17.     while (v)
  18.     {
  19.         if (v % 10 != 0)
  20.             ans *= v % 10;
  21.         v /= 10;
  22.     }
  23.     return ans;
  24. }
  25.  
  26. void Prepare()
  27. {
  28.     for (int i = 1; i < 10; ++i)
  29.         dp[i] = i,
  30.         s[i].push_back(i);
  31.     for (int i = 10; i < N; ++i)
  32.         dp[i] = dp[Convert(i)],
  33.         s[dp[i]].push_back(i);
  34. }
  35.  
  36. void Read()
  37. {
  38.     cin >> l >> r >> k;
  39. }
  40.  
  41. void Solve()
  42. {
  43.     cout << upper_bound(s[k].begin(), s[k].end(), r) - lower_bound(s[k].begin(), s[k].end(), l) << "\n";
  44. }
  45.  
  46. int32_t main()
  47. {
  48.     ios::sync_with_stdio(0);
  49.     cin.tie(0);
  50.     cout.tie(0);
  51.     if (fopen(task ".INP", "r"))
  52.         freopen(task ".INP", "r", stdin),
  53.             freopen(task ".OUT", "w", stdout);
  54.     Prepare();
  55.     for (cin >> q; q--;)
  56.         Read(),
  57.             Solve();
  58. }
Advertisement
Add Comment
Please, Sign In to add comment