【题意】
已知一个长度为n(n为奇数)的置换是某置换的2^s次方,求原置换
【输入】
第一行两个数n、s
接下来n行每行一个数字表示置换
【输出】
每行输出一个数字输出原置换
由于是某置换的2^s次方,所以我将序列开了s次2次方
由于数据较弱,都是一个循环,所以过了
program poj1721; var n,s,i,j,k,p:longint; ans,temp:array [0..1001] of longint; begin read(n,s); for i:=1 to n do read(temp[i]); if n=1 then begin writeln(1); exit; end; ans[1]:=1; for i:=2 to n do ans[i]:=temp[ans[i-1]]; for j:=s downto 1 do begin temp:=ans; k:=1; for i:=1 to n do begin ans[k]:=temp[i]; k:=k+2; if k>n then k:=k-n; end; end; for i:=1 to n do if i=n then temp[ans[i]]:=ans[1] else temp[ans[i]]:=ans[i+1]; for i:=1 to n do writeln(temp[i]); end.