笔试过程中遇到翻书问题:有81本书编号为1-81,起初书都是打开的。现在从序号2开始直至序号81,对书做如下的操作:凡是该序号倍数的书,则从当前状态变为相反状态(比如打开--->合上 或 合上-->打开),请问最后剩下多少本书?
利用python编写如下的代码即可求得结果:
import sys
if __name__ == '__main__':
nBook=[]
for i in range(0,81):
nBook.append(0) #记录书的初始状态0表示未翻,1表示合上
Flip_Num=2
while (Flip_Num<82):
for num in range(Flip_Num,82,Flip_Num):
if nBook[num-1]==0:
nBook[num-1]=1
else:
nBook[num-1]=0
Flip_Num=Flip_Num+1
for x in range(0,81):
if nBook[x]==0:
print x+1
print '\n'
相应的数学解释: