您的位置:首页 > 其它

POJ1026 Cipher

2015-12-22 23:28 225 查看
POJ1026 Cipher

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
= 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
= 0;
cout << dst << endl;
}
cout << endl;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: