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;}