题意:
求1到(10^N - 1)中9的个数,其中视99这个数出现9的个数为2次。
最初,一看到此题,便联想到《编程之美》上的1的个数那道题。但是推起来诸多麻烦。
xj给了个good Ideal。
规律可循,
10^N-1,这个数很特别。
考虑1-9, 其中1,2,3,...9每个数分别出现一次
稍微变形0-9,其中0,1,2,3...9每个数同样只出现一次
0-99
也能发现1,2,3....9出现的次数是一样多的,而0却只出现10次。
不过我们可以如此考虑问题
0-9
变形为00,01,02,03,.....09
这么看的话,0,1,2,3,.....9出现的次数都是一样多了,均为20次。
不难发现10^2 * 2/10 = 20
同理
0到10^N-1中九出现的个数为
10^6 * 6/10 = 10^5 * 6 = 600000