问题描述如下:
一本书的页码从自然数1开始顺序编码直到自然数n。书的页码按照通常的习惯编排,每个页码都不含多余的前导数字0。例如第6页用6表示而不是06或006。数字统计问题要求对给定书的总页码,计算出书的全部页码中分别用到多少次数字0,1,2,3,.....9。
《算法设计与分析习题》分析:
考察由0,1,2...9组成的所有n位数。从n个0到n个9共有10^n个n位数。在这10^n个n位数中,0,1,2.....9第个数字使用次数相同,设为f(n)。f(n)满足如下递推式:
n>1: f(n) = 10f(n-1)+10^(n-1)
n = 1: f(n) =1
由此可知,f(n) = n*10^(n-1)。
据此,可从高位向低位进行统计,再减去多余的0的个数即可。
【注:代码中的文字例子描述引用自http://blog.youkuaiyun.com/jcwKyl/archive/2008/10/02/3009244.aspx】
计算还挺烦的。。呼,幸好有文字描述的例子才慢慢推出来。
409

被折叠的 条评论
为什么被折叠?



