卡牌切牌游戏:模拟切牌找位置
小L有一叠卡牌,总共N张。从上向下依次为第0张、第1张...第N-1张。 小L每次切牌会从底部留出M张牌,把顶部剩余前N-M张牌切到牌堆底部。即,第0张会变成第M张,第1张会变成第M+1张...第N-M张变成第0张 ...第N-1张会变成第M-1张 小L为了表现自己卓越的记忆力,他会在多次切牌后说出初始第x张牌最后的位置。 但是有一次小L切牌次数太多了,切了10个次,已然超过了小L的记忆力。他想请你算一下初始第×张牌最后的位置。
输入格式 共一行: 四个整数N、M、x、k,分别表示卡牌张数、每次切牌从牌底留出的牌数、小L想知道最终位置的卡牌的初始位置、切牌数的指数 (1<M≤N<109, 0<x<N, 0<k<109)
输出格式 共一行:一个整数,表示初始第x张牌最后的位置。
Python编程内容:要计算初始第x张牌最后的位置,我们可以模拟小L的切牌过程。根据题目描述,每次切牌会从底部留出M张牌,并将剩余的牌切到牌堆底部。
下面是一个Python编程示例:
def final_card_position(N, M, x, k):
# 计算初始第x张牌最后的位置
for _ in range(k):
x = (x + N - M) % N
return x
# 读取输入
N, M, x, k = map(int, input().split())
# 计算初始第x张牌最后的位置
position = final_card_position(N, M, x, k)
# 输出结果
print(position)
你可以将以上代码保存为一个Python文件,然后运行并输入对应的N、M、x和k值,程序会根据计算结果输出初始第x张牌最后的位置。
原文地址: https://www.cveoy.top/t/topic/bqlp 著作权归作者所有。请勿转载和采集!