#P3509. 取牌游戏

    ID: 5330 传统题 1000ms 256MiB 尝试: 11 已通过: 4 难度: 3 上传者: 标签>数据结构队列模拟入门结构体数组排序顺序结构

取牌游戏

题目描述

小明正在使用一堆共 KK 张纸牌与 N1N-1 个朋友玩取牌游戏。其中 NK100000N \le K \le 1000002N1002 \le N \le 100KKNN 的倍数。纸牌中包含 M=K/NM = K/N 张 “good” 牌和 KMK-M 张 “bad” 牌。小明负责发牌,他当然想自己获得所有 “good” 牌。

他的朋友怀疑他会欺骗,所以他们给出以下一些限制,以防小明耍诈:

  1. 游戏开始时,将最上面的牌发给小明右手边的人。
  2. 每发完一张牌,他必须将接下来的 PP 张牌(1P101 \le P \le 10)一张一张地依次移到最后,放在牌堆的底部。
  3. 以逆时针方向,连续给每位玩家发牌。

小明迫切想赢,请你帮助他算出所有 “good” 牌放置的位置,以便他得到所有 “good” 牌。牌从上往下依次标注为 #1,#2,#3,…

输入格式

一行,三个用一个空格隔开的正整数 N,K,PN, K, P

输出格式

输出共 MM 行,每行一个整数,从顶部按升序依次输出 “good” 牌的位置。

样例

3 9 2
3
7
8

样例解释

共有 33 人(小明和他的两个朋友),99 张牌,每发完一张牌后需移动 22 张牌到牌堆底部。发牌顺序为:小明右手边的朋友 → 小明左手边的朋友 → 小明,如此循环。初始牌堆从上到下依次为 #1, #2, …, #9。

模拟发牌过程如下:

  1. 给第一位朋友发牌:发牌顶 #1,移动 #2、#3 到底部。牌堆变为 #4, #5, #6, #7, #8, #9, #2, #3。
  2. 给第二位朋友发牌:发牌顶 #4,移动 #5、#6 到底部。牌堆变为 #7, #8, #9, #2, #3, #5, #6。
  3. 给小明发牌:发牌顶 #7,移动 #8、#9 到底部。小明得到 #7。牌堆变为 #2, #3, #5, #6, #8, #9。
  4. 给第一位朋友发牌:发牌顶 #2,移动 #3、#5 到底部。牌堆变为 #6, #8, #9, #3, #5。
  5. 给第二位朋友发牌:发牌顶 #6,移动 #8、#9 到底部。牌堆变为 #3, #5, #8, #9。
  6. 给小明发牌:发牌顶 #3,移动 #5、#8 到底部。小明得到 #3。牌堆变为 #9, #5, #8。
  7. 给第一位朋友发牌:发牌顶 #9,移动 #5、#8 到底部。牌堆变为 #5, #8。
  8. 给第二位朋友发牌:发牌顶 #5,移动 #8 到底部(牌堆中仅剩一张,移动后不变)。牌堆变为 #8。
  9. 给小明发牌:发牌顶 #8,此时牌堆已空。小明得到 #8。

小明最终得到的三张牌为 #7、#3、#8,因此 “good” 牌应放在位置 3、7、8。按升序输出即为 3、7、8。

数据范围

  • 2N1002 \le N \le 100
  • NK100000N \le K \le 100000,且 KKNN 的倍数
  • M=K/NM = K/N
  • 1P101 \le P \le 10