【此题同适用于python、c++等级考试一级】
假设有10个硬币,从1到10按顺序依次编号,初始时全部处于正面向上的状态;有M个人(M为不大于10的正整数)也从1到M依次编号。
第一个人(1号)将硬币全部翻转一次,第二个人(2号)将编号为2的倍数的硬币翻转一次,第三个人(3号)将编号为3的倍数的硬币翻转一次。
依照编号递增顺序,以后的人都和3号一样,将凡是自己编号倍致的硬市翻转一次。
请问:当第M个人操作之后,哪些硬币是正面向上的,按从小到大说出其编号,以空格分开。
提示输入人数:
说出结果:
解析:
思路就是用程序来模拟整个过程
创建一个列表,假设默认都是1表示朝上,-1表示向下
使用询问并等待,获取输入的人数
两层循环,外层重复m(回答)次,表示m(回答)个人依次进行操作
内层循环对人编号的倍数(判断余数为0)的硬币进行翻转(1和-1之间得变换用乘以-1即可)
最后通过循环遍历,将值为1的序号全部拼接到一起(变量结果中)即可
完整程序参考于少儿编程网:kidscode.cn