fork download
  1. const calculateClapsFromZero = (n) => {
  2. if (n <= 0) return 0;
  3. let res = 0;
  4. for (const i of [3, 6, 9]) {
  5. let count = 0;
  6. let factor = 1;
  7. while (factor <= n) {
  8. const h = Math.floor(n / (factor * 10));
  9. const cur = Math.floor((n / factor) % 10);
  10. const l = n % factor;
  11.  
  12. count += h * factor;
  13.  
  14. if (cur > i) count += factor;
  15. else if (cur === i) count += l + 1;
  16. factor *= 10;
  17. }
  18. res += count;
  19. }
  20. return res;
  21. };
  22.  
  23. // Solution 1: BigO(logN)
  24. const totalClaps = (numbers) => {
  25. const arr = numbers.trim().split(" ");
  26. if (arr.length != 2) return 0;
  27. const a = parseInt(arr[0]);
  28. const b = parseInt(arr[1]);
  29. if (a > b) return 0;
  30. return calculateClapsFromZero(b) - calculateClapsFromZero(a - 1);
  31. };
  32.  
  33. console.log(totalClaps("999999 10000000")); // Expected: 19200006
  34. console.log(totalClaps("1 10")); // Expected: 3
  35. console.log(totalClaps("3 6")); // Expected: 2
  36. console.log(totalClaps("8 8")); // Expected: 0
  37. console.log(totalClaps("33 33")); // Expected: 2
  38. console.log(totalClaps("333 333")); // Expected: 3
  39. console.log(totalClaps("30 40")); // Expected: 13
  40. console.log(totalClaps("1 100")); // Expected: 60
  41. console.log(totalClaps("100 100")); // Expected: 0
  42. console.log(totalClaps("300 309")); // Expected: 13
  43. console.log(totalClaps("200 300")); // Expected: 61
  44.  
  45. console.log(totalClaps("200 300 0")); // Expected: 0 - Wrong input format
  46. console.log(totalClaps("300 20")); // Expected: 0 - Wrong input format (a > b)
  47.  
Success #stdin #stdout 0.05s 17028KB
stdin
Standard input is empty
stdout
19200006
3
2
0
2
3
13
60
0
13
61
0
0