面试题: 一百个灯泡排成一排,第一轮将所有灯泡打开;第二轮每隔一个灯泡关掉一个...

百度的面试题(摘自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()

 

posted @ 2013-03-30 22:40  大料  阅读(3256)  评论(2编辑  收藏  举报