![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsISPrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdsATOfd3bkFGazxCMx8VesATMfhHLlN3XnxCMwEzX0xiRGZkRGZ0Xy9GbvNGLpZTY1EmMZVDUSFTU4VFRR9Fd4VGdsYTMfVmepNHLrJXYtJXZ0F2dvwVZnFWbp1zczV2YvJHctM3cv1Ce-YWan5CZ4EGNmNTY4QzYkJTMxMTO3EzYwIDM5EmM2AzN5UWZk9CX0EzLchDMxIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjL4M3Lc9CX6MHc0RHaiojIsJye.gif)
1 #include <cstdio>
2 #include <cstring>
3 #include <algorithm>
4 #define maxn 3000
5 using namespace std;
6
7 int a[maxn],key[maxn];
8 int n,k;
9 char str[maxn],ans[maxn];
10 void get_key()
11 {
12 for(int i=1; i<=n; i++)
13 {
14 int t1=1;
15 int id=a[i];
16 while(id!=i)
17 {
18 id=a[id];
19 t1++;
20 }
21 key[i]=t1;
22 }
23 }
24
25 int main()
26 {
27 while(scanf("%d",&n)!=EOF)
28 {
29 if(n==0) break;
30 memset(a,0,sizeof(a));
31 memset(key,0,sizeof(key));
32 for(int i=1; i<=n; i++)
33 {
34 scanf("%d",&a[i]);
35 }
36 get_key();
37 while(scanf("%d",&k)!=EOF)
38 {
39 if(k==0) break;
40 getchar();
41 gets(str+1);
42 int len=strlen(str+1);
43 for(int i=len+1; i<=n; i++) str[i]=' ';
44 str[n+1]='\0';
45 for(int i=1; i<=n; i++)
46 {
47 int id1=i;
48 for(int j=0; j<k%key[i]; j++)
49 {
50 id1=a[id1];
51 }
52 ans[id1]=str[i];
53 }
54 ans[n+1]='\0';
55 for(int i=1; i<=n; i++)
56 {
57 printf("%c",ans[i]);
58 }
59 printf("\n");
60 }
61 printf("\n");
62 }
63 return 0;
64 }
View Code