一个小学数学题引发的血案
来源:互联网 发布:淘宝怎么抢红包 编辑:程序博客网 时间:2024/05/16 19:15
前几天给弟弟补习的时候发现的这道有意思的题目:
1~5122这个范围内的整数一共有多少个零,例如100就是2个零。
初看到这题的时候让我想到了递归算法(小学真牛逼),可感觉还是很麻烦。大家有没有什么好想法呀,如果能用程序实现更好了
发到论坛上大家讨论了一下。(很意外,这题居然大家讨论得这么火热,刚开始玩csdn,感觉不错^_^)
看到这个题目的时候一开始也是暴力法解决,不过后来发现了其中规律,个人是这么算的。。。
先计算1~10,不用说1个
然后1~100,也就是1*10-0+1=11。
再然后是1~1000,也就是(11+9)*10-9+1=192(9个01……09)
那么5122就是(192+99+9)*5+(11+9)*1+2=1522(99个001……099,9个001……000)
如果数字大,以此类推。。。
1~10000,就是(192+99+9)*10-(99+9)+1=2893
有点动态规划的意思,不过还是过于繁琐。。。于是放到论坛里看看大家的算法。
稍微总结一下,看的几种类型的解法:
首先是这个方法:
穷举,虽然暴力,不过问题是完全解决啦。不多解释了
更暴力:
比较好的方法,效率挺高的^_^
如果是用人脑嘛
个位有零情况:5122/10=512
十位有零情况:(5122/100)*10=510//0,1,2……9
百位有零情况:(5122/1000)*100=500
all:1522个0
这个算法最简单,也很快捷。不过对1000,100这样的数时就有问题,是因为计算了01,0101,001这样的东西,去掉就好啦。
- 一个小学数学题引发的血案
- 一个 * 引发的血案
- 一个“-”引发的血案
- 一个"/"引发的血案
- 一个松果引发的血案
- 一个memset引发的血案
- 一个包子引发的血案?
- 一个斜杠引发的血案
- 一个逗号引发的"血案"
- 一个static 引发的“血案”
- 一个分号引发的血案
- 一个key引发的血案
- 一个变量引发的血案
- 一个return引发的血案
- 一个ViewSwitcher引发的血案!
- 一个分号引发的“血案”
- 一个static引发的血案
- 一个2803引发的血案
- 《转》 MMU代码分析(作者:wogoyixikexie@gliet)
- pku1007 poj 1007 hdu1379 DNA Sorting
- 为什么我觉得软件测试是一个有前途的行业?
- 自定义Absolutelayout
- MOSFET的特性参数
- 一个小学数学题引发的血案
- 一个很有意思的餐馆
- fedora 13 mysql安装记录
- linux下gcc编译环境安装与测试
- gedit折叠功能的实现
- F#入门-第二章 F#基础-第四节 let语句-值的绑定
- VC 获取机器的Ip和主机名
- 自定义absolutelayou
- pku3233 Matrix Power Series