--- title: 算法设计与分析课后题,统计数字问题 url: 'https://yayi.site/archives/算法设计与分析课后题统计数字问题' categories: 算法与设计 cover: 'https://cdn.jsdelivr.net/gh/yan-bolan/picbed/img/动漫/結城友奈は勇者である/犬吠·埼 風.png' tags: 算法与设计 abbrlink: 78c19b2a date: 2019-09-25 08:55:56 updated: 2021-05-14 22:04:58 --- 参考这两篇文章写的,也就是参考答案的解法。 https://www.jb51.net/article/70467.htm (参考这个。 https://www.cnblogs.com/mr-cheneytao/p/9724191.html #### 大概意思是 9999=9000+900+90+9 =9\*999 +1 +9\*99+1 +9 如数字1次数=9×3×10\^2\^+ 9×2×10\^1\^+9=2889 再加上 最高位的9 在==0至9 之前的区间==\*\*内每个数字出现\*\*了1000次\*\*(9的话是算后面的数,如\*\*4567\*\*,4 应该是567次,而3是1000次。),所以1 再加1000,等于3889; 依次往低位,分别加 100、10 、1 (个位单独算),3889+100+10+1=4000; ###### 零 至于0的情况,分两种,上面说的,最高位 0-9之间,0也出现了1000次,以及后面的低位,这不需要加的,所以,0的数字为,2889, 还有一种情况如页数为10310 这种中间有零的。如中间的零第4位,是要减去1000 次的,最后加上1,因为零也算一个。 ###### 、 总之就是零的情况相加比较特殊,其它的 按公式算,再加上多出现的(如99页的书,变成199页,那么1 是多出现了 100次的。),再搞定0的。就可以了。 可以用一个穷举法做一个对比判断结果是否正确。 代码就不贴了,写个思路。网上动不动就贴代码。。。
原创
算法设计与分析课后题,统计数字问题-算法设计与分析课后题统计数字问题
本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
评论交流
欢迎留下你的想法