标题: 塌先生2006系列问题07
性别:男-离线 寂寞空手道

Rank: 8Rank: 8
组别 羽林都尉
级别 右将军
好贴 5
功绩 129
帖子 1027
编号 40131
注册 2005-6-3
来自 上海


发表于 2005-11-23 18:12 资料 主页 文集 短消息 看全部作者 QQ
塌先生这个题目看似简单,其实蛮难的。主要是后面不是一个完整的数段,而是截止到200620062006了,这样就必须要重新推算从200000000000到200620062006只见有多少个零出现。

我的算法是:

考虑到0-9这是个数字是顺序出现的,所以每个数位上0出现的频率是相同数位的所有自然数的1/10。解释一下就是0在10-99这90个数的个位出现9次,在100-999这900个数中,个位出现90次,十位出现90次。由此得出一个公式:

零在所有某位数中出现的次数=(数位-1)*9*10^(数位-2)。带入数位得到:

零在所有个位数中出现的次数=(1-1)*9*10^(1-2)=0
零在所有两位数中出现的次数=(2-1)*9*10^(2-2)=1*9*10^0=9
零在所有三位数中出现的次数=(3-1)*9*10^(3-2)=2*9*10^1=180
。。。
零在所有十一位数中出现的次数=(11-1)*9*10^(11-2)=10*9*10^9=90,000,000,000

由于十二位数截止到200620062006,因此上面的公式只能算到99,999,999,999,从100,000,000,000到200,620,062,006就不适用了。

不过从100,000,000,000到199,999,999,999还是很容易算出来的,所有的0出现的次数=(12-1)*1*10^(12-2)=11*1*10^10=110,000,000,000。

比较麻烦的是从200,000,000,000到200,620,062,006,目前我还不知道怎么推出公式,如果硬算的话就太麻烦了。那位朋友有更好的方法?还请不吝赐教!


顶部

正在浏览此帖的会员 - 共 0 人在线




当前时区 GMT+8, 现在时间是 2025-5-14 12:10
京ICP备2023018092号 轩辕春秋 2003-2023 www.xycq.org.cn

Powered by Discuz! 5.0.0 2001-2006 Comsenz Inc.
Processed in 0.009359 second(s), 9 queries , Gzip enabled

清除 Cookies - 联系我们 - 轩辕春秋 - Archiver - WAP