找回密码
 注册
Simdroid-非首页
查看: 179|回复: 3

[基础概念] 打印数字问题

[复制链接]
发表于 2010-3-20 20:22:53 | 显示全部楼层 |阅读模式 来自 北京海淀
有一台打印机总是将3打成X,问打印1~1,000,000这100万个数字,
1)会打印错几个?
2)会打出多少个X?
发表于 2010-3-21 17:24:36 | 显示全部楼层 来自 上海宝山区
Simdroid开发平台
本帖最后由 FreddyMusic 于 2010-3-21 17:26 编辑

Brute Force.

Question 1: 会打印错几个数字?
  1. Length@Select[IntegerDigits[Range[10^6]], MemberQ[#, 3] &]
复制代码


Question 2 :  会打印错几个数字?
  1. Length@Select[Flatten@IntegerDigits[Range[10^6]], (# == 3) &]
复制代码


从10^1, 10^2 ...... 10^n 上归纳得到函数,也是一种实用的方法。
回复 1 不支持 0

使用道具 举报

发表于 2010-3-20 21:24:22 | 显示全部楼层 来自 北京
有一台打印机总是将3打成X,问打印1~1,000,000这100万个数字,
1)会打印错几个?
2)会打出多少个X?

你知道交通灯如果等待时间是999999秒,总共6位数,那么从999999变到1时,如何显示1吗?我想显示的应该是000001.显示0应该是000000.
于是按照以下规则来写所有的数字,0至999999之间的所有整数全部写成6位的形式不够六位左边补0,如253必须写成000253.
那么你的问题就变成了000000~999999之间,有多少个数字含有3呢?有多少个3呢?
显然第二个问题比较好回答,先说在这一百万个数字中每个数码出现的次数是相同的,于是每个数码出现的次数是6*10^6/10=6*10^5,得到3出现了60万次,于是会出现60万个X,
然后解答第一个问题,考虑到每一位出现3的都有1/10的概率,并且每一位出现3的事件是独立事件,于是结果满足贝努利分布,于是含有3的数字的个数为:
  1. In[41]:= 10^6*Sum[PDF[BinomialDistribution[6, 1/10], k], {k, 1, 6}]

  2. Out[41]= 468559
复制代码
综上所述:
1)会打印错468559个?
2)会打出60万个X?
回复 不支持

使用道具 举报

 楼主| 发表于 2010-3-21 18:28:53 | 显示全部楼层 来自 湖南湘潭
1)问题一:先考虑没有打错的数字的个数,更简单一些
          不足6位的前面补0,则没有打错的数字的个数为:9*9*9*9*9*9 = 9^6
                 则打错的个数为 1,000,000-9^6 = 468559
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2026-1-7 03:51 , Processed in 0.028286 second(s), 14 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表