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


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

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM