C++的
要C的话 自己改一下输入输出就好
#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
int main()
{
int n,i,k,x[210],j,l,m;
char str1[210],str2[210];
while(cin>>n&&n!=0)
{
int y[210]={0}; //用于存储每一个数组元素要循环的的、周期
for(i=0;i<n;i++)
cin>>x[i];
for(i=0;i<n;i++)
{
j=x[i]-1;
while(true)
{
if(x[j]!=x[i])
{
j=x[j]-1;
y[i]++;
}
else
{
y[i]++;
break;
}
}
}
while(scanf("%d",&k)!=EOF&&k!=0)
{
getchar();
gets(str1);
for(i=strlen(str1);i<n;i++)
str1[i]=' ';
for(i=0;i<n;i++)
{
m=i;
for(j=0;j<k%y[i];j++) //此时,循环k的余数次就可以得出答案了
m=x[m]-1;
str2[m]=str1[i];
}
str2[n]='\0';
puts(str2);
}
cout<<endl;
}
}