【Scratch数学编程】水手分椰子

在一次航海中,有三名水手和一只猴子因船舶失事而被困在一个荒岛上,他们发现岛上仅有的食物是椰子。水分们齐心协力,劳累了一天,收集了许多椰子。天黑了,他们决定先去睡觉,等第二天起来后再分配椰子。

当天夜里,一个水手醒来,决定拿走属于他的那份椰子而不想等到早上。他把椰子分为相等的三堆,但发现多出了一个椰子,于是把这个椰子给了猴子。接着他藏好了自己那份椰子就去睡觉了。不久,另一个水手也醒来,他做了与第一个水手同样的事,也把多出的一个椰子给了猴子。而当第三个水手醒来后,他也跟前两个水手一样分了椰子,也把多出的一个椰子给了猴子。

第二天早晨,当三名水手起来时,他们决定把椰子平分为三堆,每人一份,并把多出的一个椰子也给了猴子。

请问,水手们最少收集到多少个椰子?

Scratch编程解题】根据故事中的描述,每一个水手分椰子的过程是,把一个椰子给猴子,再把椰子平均分为3份,自己藏起一份,留下两份。水手们在头天夜里和第二天早晨共分了4次椰子。

我们采用枚举法,让椰子数从4开始递增,并判断椰子数能否用4次分完。如果刚好能分完则求得问题的解;否则继续增加椰子数,再模拟分椰子,直到刚好分完为止。

我们把上面的枚举算法用流程图表示如下:
【Scratch数学编程】水手分椰子-少儿编程网

接下来,我们根据上面介绍的算法来编写主程序。

首先,我们创建一个名为“x”的变量,并赋初值为4;再用“重复执行直到……”指令构建一个循环结构,在循环体中逐一增加变量“x”的值。这就是一个枚举算法的基本结构。

【Scratch数学编程】水手分椰子-少儿编程网

对于每一个“x”的值,我们调用模块“水手分椰子”进行检测,如果椰子能分完,则结束循环,输出问题的解。否则就继续检测下一个“x”的值。

【Scratch数学编程】水手分椰子-少儿编程网

接下来,我们还需要一个重要的模块 “水手分椰子”来检测列举的椰子数是否能分完。

模块:水手分椰子

创建一个名为“水手分椰子”的模块,参数是一个名为“椰子”的数字参数。
【Scratch数学编程】水手分椰子-少儿编程网

创建一个名为“椰子”的变量,并将参数“椰子”赋给变量“椰子”。请注意参数“椰子”和变量“椰子”的指令块颜色不同。
【Scratch数学编程】水手分椰子-少儿编程网
接下来,在一个“重复执行……次”的循环结构中对变量“椰子”进行3次迭代。

根据故事描述,3名水手夜里先后偷偷分了3次椰子,每一次都是把1个椰子给了猴子,再把剩下的椰子均分为3份,自己藏起来1份,只留下2份。因此,这个过程可以表示如下:

【Scratch数学编程】水手分椰子-少儿编程网

当天亮后,水手们一起又分了一次椰子。把一个椰子给了猴子,其余的均分成3份,一人一份。可以用下面等式表示:

【Scratch数学编程】水手分椰子-少儿编程网

然后把这个等式放入一个“如果……那么……否则”的条件判断指令中。

【Scratch数学编程】水手分椰子-少儿编程网

如果条件满足,则把变量“椰子分完”设定为1,否则设定0。

到此,模块“水手分椰子”的代码编写完毕,模块的代码如下:

【Scratch数学编程】水手分椰子-少儿编程网

到这里,解决“水手分椰子”问题的全部代码编写完毕,完整代码清单如下:

【Scratch数学编程】水手分椰子-少儿编程网

点击绿旗运行程序,得到结果:椰子总数最少是79。

【Scratch数学编程】水手分椰子-少儿编程网

【试一试】

“水手分椰子”问题据说是伟大物理学家狄拉克提出的趣味数学题,曾登载在美国《星期六晚邮报》上。后经美国数学科普大师马丁·加德纳的介绍后更是广为流传。1979年,诺贝尔物理学奖获得者李政道博士在中国科技大学少年班讲学时,对“水手分椰子”问题作了简单变形,提出了一个五猴分桃的问题:

五只猴子采得一堆桃,它们约定次日早上起来分。半夜里,一只猴子偷偷起来,把桃均分成五堆后,发现还多一个,它吃了这桃子,拿走了其中一堆。第二只猴子醒来,又把桃子均分成五堆后,还是多了一个,它也吃了这个桃子,拿走了其中一堆。第三只,第四只,第五只猴子都依次如此做了。请问桃子数最少有多少个?

请你试一试,用Scratch编写程序求解这个问题。

本文链接:【Scratch数学编程】水手分椰子

转载声明:本站文章若无特别说明,皆为原创,转载请注明来源:少儿编程网,谢谢!^^


*文章为作者独立观点,不代表少儿编程网立场
发表评论

坐等沙发
相关文章
编程少年丨余疆海:个性十足却不失温度
编程少年丨余疆海:个性十足却不失温度
为什么大家都建议学习少儿编程要从Scratch开始?
为什么大家都建议学习少儿编程要从Scrat…
孩子学完各个阶段的编程课程能够参加哪些比赛?
孩子学完各个阶段的编程课程能够参加哪…
我的孩子从来没有接触过编程,0基础能不能学?
我的孩子从来没有接触过编程,0基础能不…
【精选作品】如何通过Scratch让小猪跑起来?(内附火影粉丝巨献,必看)
【精选作品】如何通过Scratch让小猪跑起…
0基础的孩子应该怎样学习少儿编程?
0基础的孩子应该怎样学习少儿编程?
我还没有学会写个人说明!