Python练习(三) 翻牌

题目(来源于:程序员的算法趣题):

有 100 张写着数字 1~100 的牌,并按依次顺序排列着。最开始所有牌都是背面朝上放置。我们从第 2 张牌开始,隔 1 张牌翻牌。然后第 2,4, 6, …, 100 张牌就会变成正面朝上。接下来,另一个人从第 3 张牌开始,隔 2 张牌翻牌(原本背面朝上的,翻转成正面朝上;原本正面朝上的,翻转成背面上)。再接下来,又有一个人从第 4 张牌开始,隔 3 张牌翻牌( 图1 )。像这样,从第 n 张牌开始,每隔 n-1 张牌翻牌,直到没有可翻动的牌为止。求当所有牌不再变动时,所有背面朝上的牌的数字。

 Python代码:欢迎交流。

import numpy as np
import datetime

start = datetime.datetime.now()  
flag=np.zeros((100),dtype=np.bool8)
backnum=[]
for i in range(2,101):
    j=i-1
    while(j<100):
        flag[j]= not flag[j]
        j=j+(i)
index=0        
for item in flag:
    index=index+1
    if(not item):
      backnum.append(index)      
end=datetime.datetime.now()      
spendtime=end-start 
print("******************************************")   
print("Result 2 is:")  
print(backnum)        
print("Turn Poker 2 Spend time:{}".format(spendtime))  
View Code

 

 

posted on 2021-11-26 11:38  半路敲代码  阅读(266)  评论(0编辑  收藏  举报

导航