fork download
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4. long long cnt(string & R, int n, bool cap) {
  5. if (!cap) {
  6. return pow(10, n) + 0.1;
  7.  
  8. }
  9.  
  10. if (n == 0)
  11. return 1;
  12.  
  13. long long numbers = 0;
  14. int ub = R[R.length() - n] - '0';
  15.  
  16. for (int dig = 0; dig <= ub; dig++)
  17. numbers += cnt(R, n - 1, cap & (dig == ub));
  18.  
  19. return numbers;
  20.  
  21.  
  22. }
  23. long long helper(string & R, int n, int cap) {
  24.  
  25. if (!n) return 0; // base case when our length get's exhausted.
  26.  
  27. long long ans = 0;
  28. int ub = (cap) ? R[R.length() - n] - '0' : 9;
  29. // cout << idx << " " << ub << " " << endl;
  30.  
  31.  
  32. for (int dig = 0; dig <= ub; dig++) {
  33. ans += dig * cnt(R, n - 1, cap & (dig == ub));
  34. ans += helper(R, n - 1, cap & (dig == ub));
  35.  
  36. }
  37.  
  38.  
  39. return ans;
  40.  
  41. }
  42. int main() {
  43. string L = "0", R = "15";
  44. cout << helper(R, R.length(), 1);
  45.  
  46.  
  47. }
Success #stdin #stdout 0s 5316KB
stdin
Standard input is empty
stdout
66