一个小学数学题引发的血案

前几天给弟弟补习的时候发现的这道有意思的题目:

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

有点动态规划的意思,不过还是过于繁琐。。。于是放到论坛里看看大家的算法。

 

稍微总结一下,看的几种类型的解法:

 

首先是这个方法:

 

穷举,虽然暴力,不过问题是完全解决啦。不多解释了

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值