最新消息:380元/半年,推荐全网最具性价比的一站式编程学习平台码丁实验室

韩信点兵(Scratch编程)

Scratch 少儿编程 4778浏览 0评论

友情提示:380元/半年,儿童学编程,就上码丁实验室

韩信点兵(Scratch编程)

《韩信点兵》是小学奥数题中一类经典题型:韩信带兵1500人去打仗,战死四五百人。战后清点人数时,韩信命令士兵每3人站一排,多出2人;每5人站一排,多出3人;每7人站一排,多出2人。韩信由此马上算出了士兵人数。请你也算一算,这支部队在战后还有多少人?

记得小时候老师是这么教的:

能除以3余2的数有:2,5,8,11,14……

能除以5余3的数有:3,8,13,18,23……

上面两列数中,首先出现的公共数是8,3和5的最小公倍数是15,能同时满足除以3余2,除以5余3这两个条件的数就是8+15X的整数。

列出这样的整数有:8,23,38……

能除以7余2的数有:2,9,16,23,30……

如此公共数为23,7和15的最小公倍数为105,即符合题目条件的数为23+105X的整数。再根据题目条件带兵1500人,战死四五百,即战后人数在1000~1100人,最终得出X=10,部队战后还剩余士兵1073人。

那要是不会这种巧妙的算法怎么办呢?那就只能用死办法了呗:一共1500人,战死四五百,那就是大概在1000~1100这个范围之内,然后从1000开始,1001,1002,1003……依次除以3,满足余2的再除以5,满足除以5余3的再除以7。

这样的方法对于人来说工作量大,且过于枯燥,也很容易因疲劳而出错。但是,这对于计算机来说却很简单,正好发挥计算机预算速度快的优势。在编程算法中还有专属于这种“笨”办法的名字呢——枚举法。

下面即用Scratch编写的程序代码和输出结果:

韩信点兵(Scratch编程)

韩信点兵(Scratch编程)

这个结果中已记录了1000~1500间所有满足条件的整数,最后根据题目要求选取答案即可。

育儿小贴士:

向各位宝妈们推荐一款适合孩子学编程用的软件Scratch。Scratch是由MIT媒体实验室为青少年开发的图形化编程工具,支持中英文及其他多种语言。操作就像玩乐高积木一样,只要用鼠标拖动指令积木按照某种逻辑关系拼搭在一起,就能得到可运行的程序。

软件可在MIT Scratch官网https://scratch.mit.edu免费下载。

非常可爱友好的软件界面:

韩信点兵(Scratch编程)

您必须 登录 才能发表评论!