面试题: 一百个灯泡排成一排,第一轮将所有灯泡打开;第二轮每隔一个灯泡关掉一个...
百度的面试题(摘自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()