Advertisement
tien_noob

How many zeros - LightOJ

Jun 8th, 2021
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.47 KB | None | 0 0
  1. //Make CSP great again
  2. #include <bits/stdc++.h>
  3. #define TASK "TESTCODE"
  4. using namespace std;
  5. string s;
  6. long long f[10][100][2][2], a, b;
  7. long long dp(int i, int numzeros, bool low, bool zeros)
  8. {
  9.     if (i == s.length())
  10.     {
  11.         return numzeros;
  12.     }
  13.     long long &res = f[i][numzeros][low][zeros];
  14.     if (res != - 1)
  15.     {
  16.         return res;
  17.     }
  18.     res = 0;
  19.     int k = s[i] - '0';
  20.     if (low)
  21.     {
  22.         k = 9;
  23.     }
  24.     for (int j = 0; j <= k; ++ j)
  25.     {
  26.         if (zeros == 0 && j == 0)
  27.         {
  28.             res += dp(i + 1, numzeros, low | j < (s[i] - '0'), zeros | (j != 0));
  29.         }
  30.         else
  31.         {
  32.             res += dp(i + 1, numzeros + (j == 0), low | j < (s[i] - '0'), zeros | (j != 0));
  33.         }
  34.     }
  35.     return res;
  36. }
  37. long long Get(long long x)
  38. {
  39.     s = to_string(x);
  40.     memset(f, -1, sizeof(f));
  41.     return dp(0, 0, 0, 0);
  42. }
  43. void read()
  44. {
  45.     cin >> a >> b;
  46. }
  47. void solve()
  48. {
  49.     if (a == 0)
  50.     {
  51.         cout << Get(b) - Get(a) + 1 << '\n';
  52.     }
  53.     else
  54.     {
  55.         cout << Get(b) - Get(a - 1) << '\n';
  56.     }
  57. }
  58. int main()
  59. {
  60.     ios_base::sync_with_stdio(false);
  61.     cin.tie(nullptr);
  62.     //freopen(TASK".INP", "r", stdin);
  63.     //freopen(TASK".OUT", "w", stdout);
  64.     int t = 1;
  65.     bool typetest = true;
  66.     if (typetest)
  67.     {
  68.         cin >> t;
  69.     }
  70.     for (int __ = 1; __ <= t; ++ __)
  71.     {
  72.         cout << "Case " << __ << ": ";
  73.         read();
  74.         solve();
  75.     }
  76. }
  77.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement