Count of 25
17.6 Count of 25: Write a method to count the number of 2s that appear in all the numbers between 0 and n (inclusive).
We have 1 '2' significant digits in the base, with 1 special case. If the number itself exceeds 20, then it is an addition 1 x 10 + 1 = or 11 2's. An additional base would be mean 2 x 10 + 1 = 21, and so fourth.
Computationally, that means looking to see how many times we can subtract by 10 before the number becomes less than zero. Every -10, gives us one 2. Every -100 gives is a bonus 10 x 1, every -1000 gives us a bonus 10 x 2, and so on. Even faster, I can just see how many times I can divide by 10, and then just see how many times I can divide that number. This property has a name... logarithm (log base 10). Then, all that I have to do from there is just take the number I initially divided by 10, and manually count the 2s until I finally reach the number. This will be very fast, because I can determine most of the 2's mathematically, and will at most have count 10 things at most.
num | num 2's |
10 | 1 + 10 x 0 |
100 | 10 + 10 x 1 |
1000 | 100 + 10 x 2 |
10000 | 1000 + 10 x 3 |
Last updated