Advertisement
Guest User

omke

a guest
Dec 7th, 2019
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.15 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. int a, b;
  6. int bLen;
  7.  
  8. int length(int x) {
  9.     int result = 0;
  10.  
  11.     while (true) {
  12.         result++;
  13.         x /= 10;
  14.  
  15.         if (x == 0) {
  16.             break;
  17.         }
  18.     }
  19.  
  20.     return result;
  21. }
  22.  
  23. int getNthDigit(int x, int n) {
  24.     for (; n > 0; n--) {
  25.         x /= 10;
  26.     }
  27.     return x % 10;
  28. }
  29.  
  30. int calculate(int len, int x, bool equalPrefix, bool first) {
  31.     if (len == -1) {
  32.         return 1;
  33.     }
  34.  
  35.     int xDigit = getNthDigit(x, len);
  36.     int bDigit = getNthDigit(b, len);
  37.    
  38.     if (equalPrefix) {
  39.         int result = 0;
  40.         for (int i = first; i <= bDigit && i + xDigit <= 9; i++) {
  41.             result += calculate(len - 1, x, bDigit == i, false);
  42.         }
  43.         return result;
  44.     }
  45.  
  46.     return (10 - xDigit - first) * calculate(len - 1, x, false, false);
  47. }
  48.  
  49. int main() {
  50.     cin >> a >> b;
  51.  
  52.     bLen = length(b);
  53.  
  54.     long long ans = 0;
  55.  
  56.     for (int x = 1; x <= a; x++) {
  57.         for (int yLen = 1; yLen <= bLen; yLen++) {
  58.             ans += calculate(yLen - 1, x, yLen == bLen, true);
  59.         }
  60.     }
  61.  
  62.     cout << ans << "\n";
  63.     return 0;
  64. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement