#include<stdio.h>
#include<string.h>
int main(){
char s1[205],s2[205];
int a[205],b[205],n,k,i,t,temp;
while(scanf("%d",&n)!=EOF&&n){
for(i=1;i<=n;i++){
scanf("%d",&a[i]);
}
for(i=1;i<=n;i++){
b[i]=1;
t=i;
while(a[t]!=i){
// printf("%d ",t);
t=a[t];
b[i]++;
}
}
scanf("%d",&k);
while(k){
getchar();
gets(s1);
int len=strlen(s1);
if(len<n){
for(i=len;i<n;i++)
s1[i]=' ';
s1[n]='\0';
}
for(i=0;i<n;i++){
temp=k%b[i+1];
t=i+1;
while(temp--)
t=a[t]; //计算k次置换后的位置
s2[t-1]=s1[i];
}
s2[n]='\0';
puts(s2);
scanf("%d",&k);
}
printf("\n");
}
return 0;
}
pku1026
最新推荐文章于 2015-05-13 15:00:09 发布