Advertisement
luanaamorim

Untitled

May 27th, 2021
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.17 KB | None | 0 0
  1. ll memo[2][2][101][11][11][11][11][11][2];
  2. string a, b;
  3.  
  4. ll f(int minq, int maxq, int idx, int a1, int a2, int a3, int a4, int a5, int null)
  5. {
  6.     if (idx == -1) return (a5 != 10);
  7.  
  8.     ll &ans = memo[minq][maxq][idx][a1][a2][a3][a4][a5][null];
  9.     if (~ans) return ans;
  10.  
  11.     int l = (minq ? a[idx]-'0' : 0);
  12.     int r = (maxq ? b[idx]-'0' : 9);
  13.     ans = 0;
  14.  
  15.     for (int i = l; i <= r; i++)
  16.     {
  17.         if (i > a4) ans += f((minq && (l==i)), (maxq && (r==i)), idx-1, a1, a2, a3, a4, i, 0);
  18.         else if (i > a3) ans += f((minq && (l==i)), (maxq && (r==i)), idx-1, a1, a2, a3, i, a5, 0);
  19.         else if (i > a2) ans += f((minq && (l==i)), (maxq && (r==i)), idx-1, a1, a2, i, a4, a5, 0);
  20.         else if (i > a1) ans += f((minq && (l==i)), (maxq && (r==i)), idx-1, a1, i, a3, a4, a5, 0);
  21.         else if (i > 0 || !null) ans += f((minq && (l==i)), (maxq && (r==i)), idx-1, i, a2, a3, a4, a5, 0);
  22.         else ans += f((minq && (l==i)), (maxq && (r==i)), idx-1, a1, a2, a3, a4, a5, 1);
  23.     }
  24.  
  25.     return ans % MOD;
  26. }
  27.  
  28. int main()
  29. {_
  30.     cin >> a >> b;
  31.     reverse(all(a));
  32.     reverse(all(b));
  33.     while (a.size() < b.size()) a.push_back('0');
  34.     memset(memo, -1, sizeof(memo));
  35.     cout << f(1, 1, b.size()-1, 10, 10, 10, 10, 10, 1) << endl;
  36. }
  37.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement