面试题: 一百个灯泡排成一排,第一轮将所有灯泡打开;第二轮每隔一个灯泡关掉一个...
百度的面试题(摘自infoq):一百个灯泡排成一排,第一轮将所有灯泡打开;第二轮每隔一个灯泡关掉一个。即排在偶数的灯泡被关掉,第三轮每隔两个灯泡,将开着的灯泡关掉,关掉的灯泡打开。依次类推,第n轮结束的时候,还有几盏灯泡亮着。
使用一段代码实现:
1 # -*- coding: utf-8 -*- 2 #!/usr/local/bin/python 3 from datetime import datetime 4 5 6 if __name__ == '__main__': 7 print datetime.now() 8 9 n = 100 10 data = [1] * n 11 print data, sum(data) 12 for _i in range(1, n): 13 for _j in range(len(data)): 14 if _j in range(_i, n, _i+1): 15 data[_j] ^= 1 16 print data, sum(data) 17 18 print datetime.now()
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步