资讯中心 Info
当前位置:酷叮猫 > 资讯中心 >
Python 开灯问题
发布日期:2018-08-17 阅读次数:

[题目]

有n盏灯,编号为1~n.

第1个人把所有的灯打开,

 第2个人按下所有编号为2的倍数的开关(这些灯将被关掉)

第3个人按下所有编号为3的倍数的开关(其中关着的灯将被打开,开着的灯将被关闭)

依次类推... 一共有k个人,问最后有哪些灯开着?

[输入] n和k, k<=n<=1000

[输出] 打印开着的灯的状态列表, 1 表示开灯, 0 表示关灯

k=1 n=_,1,1,1,1,1,1
k=2 n=_,1,0,1,0,1,0
k=3 n=_,1,0,0,0,1,1

[运行结果]

[代码]

 
def app(n, k):
    leds = [0 for x in range(n+1)]
    for i in range(k):
        pid = i+1
        for id,x in enumerate(leds):
            if id%pid==0:
                leds[id] = 1-x
    print("Leds  status: ",leds[1:])
 
while True:
    print('='*20)
    try:
        k = int(input("people count: "))
        n = int(input("leds   count: "))
        app(n, k) # n盏灯 k人
    except:
        break

课程体系
通知公告