酷代码 AI
菜单
全部AI  /  热门  /  AI写代码神器
服务商

018年fi**(世界魔术大会)近景总冠军简纶廷的表演中有一个情节:以桌面上一根带子为界,当他将纸牌从带子的一边推到另一边时,纸牌会变成硬币;把硬币推回另一边会变成纸牌。 这里我们假设纸牌会变成等量的硬币,而硬币变成纸牌时,纸牌的数量会加倍。那么给定纸牌的初始数量,当他来回推了 n 次(来/回各算一次)后,手里拿的是纸牌还是硬币?数量是多少? 输入格式: 输入在一行里给出两个正整数,分别是纸牌的初始数量和魔术师推送的次数。这里假设初始状态下魔术师手里全是纸牌。 输出格式: 如果最后魔术师手里是纸牌,输出 0 和纸牌数量;如果是硬币,则输出 1 和硬币数量。数字间须有 1 个空格。题目保证结果数值不超出整型范围(即 2 31 −1)。

以下是使用 Python 语言解决此问题的代码: ```python def magic_show(initial_card, times): for _ in range(times): if initial_card % 2 == 0: # 如果初始纸牌数量为偶数 initial_card //= 2 # 变为硬币,数量减半 initial_card *= 2 # 再变回纸牌,数量翻倍 else: # 如果初始纸牌数量为奇数 initial_card -= 1 # 变为硬币,数量减 1 initial_card *= 2 # 再变回纸牌,数量翻倍 if initial_card % 2 == 0: print("0", initial_card) else: print("1", initial_card // 2) initial_card, times = map(int, input().split()) magic_show(initial_card, times) ``` [2024-11-08 15:12:06 | AI写代码神器 | 192点数解答]

相关提问