pku1026
来源:互联网 发布:2014十大网络神曲 编辑:程序博客网 时间:2024/06/05 20:25
#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;}