fork download
  1. #include <iostream>
  2. #include <cmath>
  3. #include <vector>
  4. using namespace std;
  5.  
  6. int countNumberAppear(int n, int d) {
  7. int count = 0;
  8. for (int i = 1; i <= n; i *= 10) {
  9. int left = n / (i * 10);
  10. int current = (n / i) % 10;
  11. int right = n % i;
  12.  
  13. if (current < d) count += left * i;
  14. else if (current == d) count += left * i + right + 1;
  15. else count += (left + 1) * i;
  16. }
  17. return count;
  18. }
  19.  
  20. int count369Clap(int n) {
  21. if (n <= 0)
  22. return 0;
  23.  
  24. return countNumberAppear(n, 3) + countNumberAppear(n, 6) + countNumberAppear(n, 9);
  25. }
  26.  
  27. int main() {
  28. int start = 0;
  29. int end = 0;
  30. cin >> start >> end;
  31. cout << count369Clap(end) - count369Clap(start-1);
  32. }
  33.  
Success #stdin #stdout 0.01s 5288KB
stdin
999999
10000000
stdout
19200006