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)


本站内容未经许可,禁止任何网站及个人进行转载。

相关内容

    暂无相关文章

评论关闭

python~HOT