有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=0
for 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+=1
print(c)

会亮的灯:

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

#方法2,参考答案

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


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