首页 > 代码库 > 在从1到n的正数中1出现的次数
在从1到n的正数中1出现的次数
网上很多帖子写这个问题,看了下方法基本上是以下两种:爆破、按位统计,但是按位统计都写了很长的统计过程,其实就是一个动态规划的过程
f(n) = f(n/10) * 10 + n/10 + 1 当n%10 != 0 时,否则为f(n) = f(n/10) * 10 + n/10
下面解释下第一种情况(后面的是特例,也很好理解)
- 公式中红色部分:固定个位数1,1-9中只有1个1;大于9的数中固定个位数为1,则起始数为11,结束值为X1,这里X为n/10,共n/10个数
- 公式中蓝色部分:对于子问题f(n/10)中每个可以出现的1,都可以为f(n)贡献10个1,这是因为个位数取值范围为0-9
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。