#4 统计数字问题

该博客探讨了如何计算一本书从1到n页的页码中,每个数字0到9出现的次数。通过分析得出递归公式,并指出在实际统计时需要排除多余的前导0。提供了一种分解方法来解决这个问题。
摘要由CSDN通过智能技术生成

问题描述

一本书的页码从自然数 1 1 1 开始顺序编码直到自然数 n n n。书的页码按照通常的习惯编排,每个页码都不含多余的前导数字 0 0 0。例如,第 6 6 6 页用数字 6 6 6 表示,而不是 06 06 06 006 006 006 等。数字计数问题要求对给定书的总页码 n n n,计算出书的全部页码中分别用到多少次数字 0 , 1 , 2 , ⋯   , 9 0,1,2,\cdots,9 0,1,2,,9

算法设计

给定表示书的总页码的 10 10 10 进制整数 n ( 1 ⩽ n ⩽ 10 ) n(1\leqslant n\leqslant 10) n(1n10)。编程计算书的全部页码中分别用到多少次数字 0 , 1 , 2 , ⋯   , 9 0,1,2,\cdots,9 0,1,2,,9

问题分析

对于任意给定的一个自然数,因为它是一个十进制数,很明显按照题目要求找出的统计数字个数必然存在一定规律,本题的难点及重点就是如何发现及找出这样一个规律。

其中, n n n 为数字位数, f ( i ) f(i) f(i) 为当给定十进制数为 i i i 位数时每个数字( 0 0 0 9 9 9)的使用次数。

得出规律:从 n n n 0 0 0 n n n 9 9 9 中共有 1 0 n 10^n 10n n n n 位数,其中每个数字 ( 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 ) (0,1,2,3,4,5,6,7,8,9) (0,1,2,3,4,5,6,7,8,9) 的使用次数相同,设为 f ( n ) f(n) f(n).则 f ( n ) f(n) f(n) 满足如下递归公式:
f

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值