#P3032. Card Trick
Card Trick
题目描述
魔术师洗牌后将牌堆背面朝上,并按以下步骤操作:
. 将顶部的牌移到底部,然后新的顶部牌正面朝上放在桌上,这张牌是黑桃A(1)。
. 将顶部两张牌依次移到底部,然后新的顶部牌正面朝上放在桌上,这张牌是黑桃2(2)。
. 将顶部三张牌依次移到底部,然后新的顶部牌正面朝上放在桌上,这张牌是黑桃3(3)。
. 依此类推,直到第张牌(最后一张)为黑桃。
该魔术的关键在于预先排列牌序。你的任务是给定牌数(),求出初始牌堆的排列顺序。
输入格式
第一行:测试用例数量。
接下来行:每行一个整数。
输出格式
对每个,输出一行初始牌堆的排列(从顶部到底部),数字间用空格分隔。
样例输入 1
2
4
5
样例输出 1
2 1 4 3
3 1 4 5 2
样例解释
. 时:
初始牌堆 [2, 1, 4, 3]
的操作步骤:
移1张到底部 → [1, 4, 3, 2]
,顶部牌1(黑桃A)放桌上。
移2张到底部 → [3, 2, 1]
,顶部牌2(黑桃2)放桌上。
移3张到底部 → [1, 3]
,顶部牌3(黑桃3)放桌上。
最后剩1张牌4(黑桃4)。
. 时:
初始牌堆 [3, 1, 4, 5, 2]
的操作步骤类似,最终依次输出黑桃1至5。
关键思路
逆向模拟:
. 初始化一个空牌堆,按从到1的顺序处理。
. 对于当前数字,执行次**“将底部牌移到顶部”**(逆向操作),再将插入牌堆顶部。
. 最终牌堆即为初始排列。
来源
Nordic 2006