题目:http://poj.org/problem?id=1721
题解:p[i]=x[2*i%n]
源代码:
#include <stdio.h>
int s,n,k,j,c;
int p[1001],x[1001];
int solve(int s,int n)
{
int p=1;
for(int i=1;i<=s;i++)
{
p=p*2;
if(p>n)
p=p%n;
}
return p;
}
int main(){
// freopen("/home/wk/in.txt","r",stdin);
scanf("%d%d",&n,&s);
k=solve(s,n);
for(int i=1;i<=n;i++)
scanf("%d",&x[i]);
p[0]=1;
j=x[1];
c=1;
while(j!=1)
{
p[c++]=j;
j=x[j];
}
for(int i=0;i<n;i++)
x[k*i%n]=p[i];
for(int i=1;i<n;i++)
p[x[i-1]]=x[i];
p[x[n-1]]=x[0];
for(int i=1;i<=n;i++)
printf("%d\n",p[i]);
return 0;
}