Description
对于一个长度为n的字符串,有一个数组表示第i个字符放到那个位置。输入多个字符串,问这样操作k次后的字符串是什么样子的。
Sample Input
10
4 5 3 7 2 8 1 6 10 9
1 Hello Bob
1995 CERC
0
0
Sample Output
BolHeol b
C RCE
题解:
整理ing
AC_Code(cpp):
#include<iostream>
using namespace std;
int key[201];
int T[201];
void Time(int n)
{
int time;
for (int i = 0; i < n; i++)
{
int k = key[i];
time = 1;
while (i != k)
{
time++;
k = key[k];
}
T[i] = time;
}
}
int main()
{
int n, k, len;
char src[201]="";
char dst[201]="";
while (cin >> n && n)
{
//输入密钥
for (int i = 0; i < n; i++)
{
int _key;
cin >> _key;
key[i] = _key - 1;
}
//初始化周期数组
memset(T, 0, sizeof(T));
Time(n);
while (cin >> k && k)
{
getchar();
cin.get(src, 200);
len = strlen(src);
for (int i = len; i < n; i++)
{
src[i] = ' ';
}
src[n] = 0;
for (int i = 0; i < n; i++)
{
int pos = i;
for (int j = 0; j < k%T[i]; j++)
{
pos = key[pos];
}
dst[pos] = src[i];
}
dst[n] = 0;
cout << dst << endl;
}
cout << endl;
}
return 0;
}