点击“公众号”可以订阅哦!
奥数题:圆周上放置有2016枚棋子,按顺时针方向依次编号为1,2,3,...,2015,2016。首先取走2号棋子,然后按顺时针方向,每隔两枚棋子就取走1枚棋子,直到圆周上仅仅剩下2枚棋子为止,问:剩下2枚棋子的编号是多少?
01
对于数学天才这都不是事,奈何咱是数学渣渣,只能望洋兴叹——这哪是人做的题~~~~
不过,利用Scratch只需三步就能轻松解决到这道奥数题。
02
利用链表模拟圆周上的棋子
利用变量只能表示一个数,而利用链表可以表示一串数字,那么如何向链表中批量的添加数字呢?
Q
&
A
那还不简单,点击链表左下角的“+”,一个个输入。
Q
A
&
我的天,2016个数字,我得添加到什么时候。
手动输入是需要勇气的,小花猫可没那样的毅力,他灵机一动,想到了利用循环的方法向链表中添加数字。
做法步骤:
1
新建变量i,链表arr
2
将变量i设为0
3
将变量i增加1
4
将变量i插入链表arr末尾
5
重复执行3、4直到i=2016
例举数字,发现规律
从链表的结构,我们可以发现链表是线性结构,并不能直接模拟出题目中的圆形闭合的情况。但我们可以利用变量i表示链表的项数,通过改变变量i的值,从而模拟环形闭合。
为了能较好的找到规律,假设棋盘上有10枚棋子,变量i值设定为0,链表长度L=10,分析如下图。图片较长耐心查看。
编写、调试程序
根据上述的分析,就可以着手程序的编写了,在编写程序中你将会用到链表操作的一些命令,直到型循环和条件判断等命令。
最后,编写完成程序,记得调试,直到成功运行,一定要有耐心、细心,多一个心眼,少一点马虎,提高编程效率、成功率。
领取专属 10元无门槛券
私享最新 技术干货