#JLT05B. 2026年J组模拟赛10连测第5场-T2 程老师的洗牌机

2026年J组模拟赛10连测第5场-T2 程老师的洗牌机

文件读写

  • 输入文件 shuffle.in
  • 输出文件 shuffle.out

限制

  • 1000ms
  • 512MB

题目描述

程老师从魔术社借来一台洗牌机,据说不管多乱的一叠牌,丢进去就能"完美"地洗一遍。程老师来劲了,想看看这机器到底是怎么洗的。

一叠牌共 nn 张,从上到下依次编号 1∼n1 \sim n。洗牌机每次工作分成两步:

第一步:均分。 把当前这叠牌从中间分成上半叠和下半叠。如果 nn 是奇数,上半叠比下半叠多一张,即上半叠有 ⌈n/2⌉\lceil n/2 \rceil 张,下半叠有 ⌊n/2⌋\lfloor n/2 \rfloor 张。

第二步:交错。 把两叠牌交错合成新的一叠。具体来说:先放上半叠的第 11 张,再放下半叠的第 11 张,然后上半叠的第 22 张、下半叠的第 22 张…… 直到某一叠放完。因为上半叠至少不比下半叠少,所以最后一张一定是上半叠的。

程老师把一副全新的牌(从上到下 1∼n1 \sim n)放进去,让洗牌机连续工作 kk 次。现在他想知道,最终这叠牌从上到下的编号顺序是什么?请你写个程序帮他算出来。

输入格式

一行两个整数 n,kn, k,用空格隔开。

输出格式

一行 nn 个整数,用空格隔开,表示洗 kk 次后从上到下的牌编号顺序。

数据范围

测试点编号 n≤n \leq k≤k \leq 特殊性质
1∼21 \sim 2 44 55 无
3∼63 \sim 6 1010
7∼87 \sim 8 100100 5050 A
9∼109 \sim 10 10310^3 B
11∼1411 \sim 14 500500 无
15∼2015 \sim 20 10310^3

特殊性质 A:nn 为奇数(上半叠比下半叠多一张)。

特殊性质 B:kk 恰好是洗牌周期的倍数。换句话说,洗 kk 次后牌序和最初完全一样,答案就是 1,2,…,n1, 2, \dots, n。

对于 100%100\% 的数据,1≤n≤1031 \leq n \leq 10^3,1≤k≤1031 \leq k \leq 10^3。

6 1
1 4 2 5 3 6
6 2
1 5 4 3 2 6
5 1
1 4 2 5 3

样例解释

样例 2:n=6,k=2n = 6, k = 2。第一次洗牌结果同样例 1,得到 1,4,2,5,3,61, 4, 2, 5, 3, 6。第二次洗牌时,上半叠为 1,4,21, 4, 2,下半叠为 5,3,65, 3, 6。交错:上半叠的 11 → 下半叠的 55 → 上半叠的 44 → 下半叠的 33 → 上半叠的 22 → 下半叠的 66,得到 1,5,4,3,2,61, 5, 4, 3, 2, 6。

样例 3:n=5n = 5(奇数),k=1k = 1。上半叠比下半叠多一张:上半叠 1,2,31, 2, 3,下半叠 4,54, 5。交错:上半叠的 11 → 下半叠的 44 → 上半叠的 22 → 下半叠的 55 → 上半叠的 33,得到 1,4,2,5,31, 4, 2, 5, 3。

难度 未评定
通过率 78.6%
尝试 14
通过 11
ID
3746
类型
传统题
Time Limit
1000ms
Memory Limit
512MiB
上传者

相关