NOC青少儿编程大赛Python小高组真题【解析】-开关灯,,
NOC青少儿编程大赛Python小高组真题【解析】-开关灯,,
有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)
本站内容未经许可,禁止任何网站及个人进行转载。
相关内容
- 暂无相关文章
评论关闭