#41473: Python Ac詳解


1120608@stu.twjh.tyc.edu.tw (70608陳威森)

學校 : 不指定學校
編號 : 266630
來源 : [163.30.29.68]
最後登入時間 :
2024-08-09 15:55:39
g797. 洗牌 (Cards) -- TOI練習賽202111新手組第2題 | From: [163.30.29.78] | 發表日期 : 2024-07-30 13:54

def main():
    import sys
    input = sys.stdin.read
    data = input().split()
    
    # 讀取第一行的數據
    # data[0] 是卡牌數量 N
    # data[1] 是洗牌次數 M
    N = int(data[0])
    M = int(data[1])
    
    # 讀取第二行的數據,這些數字是初始的卡牌順序
    # data[2:] 是從第三個元素開始的所有數字
    # 將它們轉換為整數列表
    deck = list(map(int, data[2:2 + N]))
    
    # 進行 M 次洗牌
    for _ in range(M):
        # 當前牌堆的長度
        n = len(deck)
        
        # 計算一半的長度
        half = n // 2
        
        # 將牌堆分為兩半
        left = deck[:half]  # 左半部分
        right = deck[half:] # 右半部分
        
        # 初始化新的牌堆
        shuffled = []
        
        # 交錯地將左半部分和右半部分的牌放入新的牌堆中
        for i in range(half):
            shuffled.append(left[i])  # 添加左半部分的牌
            shuffled.append(right[i]) # 添加右半部分的牌
        
        # 更新牌堆為新的交錯牌堆
        deck = shuffled
    
    # 輸出最終的牌堆
    # 將牌堆中的每個數字轉換為字符串並用空格連接
    print(" ".join(map(str, deck)))

if __name__ == "__main__":
    main()

 
ZeroJudge Forum