總網頁瀏覽量

2019年9月16日 星期一

2019 IMO(國際數學奧林匹亞數競賽) 第五題--巴斯銀行












Python Code:

import random

def hand():#手動輸入HT的初始狀態
    global A #A用全域變數 後面才讀得到
    A=[x for x in input()]

def givenumber(): #給一個正整數,找出H跟T
    n=int(input())
    B=[]
    global A
    global h1 # 'H'面朝上的次數
    A=[]
    h1=0
    for i in range(n):
       B.append(random.randrange(0,2*n))
    for j in range(n):
        if (B[j]%2)==0:
            A.append('H')
        else:
            A.append('T')
    print(A)

#hand()
givenumber()

for i in range(1000):
    flag=0 #T面的個數,當flag等於len(A),即全為T時,停止
    for j in range(len(A)):
        if A[j]=='T':
            flag+=1
    if flag==len(A):
        print(i)#輸出第幾次操作可得到全為T
        break
    
    h=0#計算幾個h面朝上
    for k in range(len(A)):
        if A[k]=='H':
            h+=1
    if A[h-1]=='H':#從左邊數來,將第h枚翻過來
        A[h-1]='T'
    else:
        A[h-1]='H'

    


沒有留言:

張貼留言