温馨提示:本站为童趣票务官方授权演出订票中心,请放心购买。
你现在的位置:首页 > 演出资讯  > 儿童亲子

NOC青少儿编程大赛Python小高组真题【解析】-开关灯

更新时间:2024-09-14 21:29  浏览量:26

有N盏灯放在一排,从1到N依次顺序编号,按一次灯开,再按一次灯灭。现在有两个人,第一个人将2的倍数的灯全部按下;第二个人将3的倍数的灯全部按下。问最终有几盏灯亮着?(最初的时候灯都是亮的)。

【输入格式】输入一个整数n。

【输出格式】输出最终有几盏灯亮着。

【输入样例】

6

【输出样例】

3

理解题意:模拟两人开关灯的过程,例如输入6,那么第一个人会按灭2、4、6盏灯(1,3,5亮),第二个人,按下3、6因此3灭,由于第一个人按灭了6,因此再按就会亮,所以1、5、6亮。

你会发现,如果既是偶数又是3的倍数,这样它会被按下两次,因此它最终是亮的。

总结分析,会灭的灯:

1、偶数灯,但不能是3的倍数,用程序表达就是 i%2==0 and i%3!=0

2、不是偶数,是三的倍数 i%2==0 and i%3!=0

#方法1,便于理解,打印了多余信息n=int(input)c=0for i in range(1,n+1):#偶数灯,但不能是3的倍数if i%2==0 and i%3!=0:print(i,'灭')elif i%2!=0 and i%3==0:#3的倍数print(i,'灭')else:print(i,'亮')c+=1print(c)

会亮的灯:

偶数灯中是3的倍数的灯或者奇数灯中不是3的倍数的灯,用程序表达:i%2==0 and i%3==0 or i%2!=0 and i%3!=0

#方法2,参考答案

n=int(input)c=0for i in range(1,n+1):if i%2==0 and i%3==0 or i%2!=0 and i%3!=0:c+=1print(c)

题目来自:口袋题库-青少儿编程等级考试题库

标签: 青少儿 编程 noc