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)题目来自:口袋题库-青少儿编程等级考试题库