洗牌
难度:
时间限制:1s内存限制:256M
【题目描述】
给定一个整数 𝑛n,表示 𝑛n 张牌,牌的编号为 11 到 𝑛n。
再给定一个洗牌置换 𝑓1,𝑓2,…,𝑓𝑛f1,f2,…,fn,进行一次洗牌操作时,应将第 11 号位置的牌交换到第 𝑓1f1 号位置,将第 𝑖i 号位置的牌交换到第 𝑓𝑖fi 号位置。保证 𝑓f 是一个 11 到 𝑛n 的排列(即 11 到 𝑛n 中的每个数字出现且只出现一次)。
一开始,牌的顺序为 1,2,⋯,𝑛1,2,⋯,n。给定一个整数 𝑘k,请输出经过 𝑘k 次洗牌后牌的顺序。
【输入格式】
第一行两个整数 𝑛,𝑘n,k;
第二行 𝑛n 个整数 𝑓1,𝑓2,…,𝑓𝑛f1,f2,…,fn。
【输出格式】
一行 𝑛n 个整数 𝑎1,𝑎2,…,𝑎𝑛a1,a2,…,an,表示经过 𝑘k 次洗牌后牌的顺序。
【输入输出样例#1】
输入#1
4 2 4 1 2 3
复制
输出#1
3 4 1 2
复制
【输入输出样例#2】
输入#2
3 100000 1 2 3
复制
输出#2
1 2 3
复制
【输入输出样例#3】
输入#3
5 3 2 3 4 5 1
复制
输出#3
3 4 5 1 2
复制
【说明提示】
样例 11 解释:
初始时四张牌的顺序:1 2 3 41 2 3 4
洗牌一次之后的顺序:2 3 4 12 3 4 1
洗牌两次之后的顺序:3 4 1 23 4 1 2
样例 22 解释:
每次洗牌都不会改变牌的位置。
样例 33 解释:
初始时五张牌的顺序:1 2 3 4 51 2 3 4 5
洗牌一次之后的顺序:5 1 2 3 45 1 2 3 4
洗牌两次之后的顺序:4 5 1 2 34 5 1 2 3
洗牌三次之后的顺序:3 4 5 1 23 4 5 1 2
【数据范围】
对 30%30% 的数据保证:1≤𝑛≤103,1≤𝑘≤1041≤n≤103,1≤k≤104;
对 60%60% 的数据保证:1≤𝑛≤5×103,1≤𝑘≤1061≤n≤5×103,1≤k≤106;
对 100%100% 的数据保证:1≤𝑛≤105,1≤𝑘≤1091≤n≤105,1≤k≤109。