📄 1026.txt
字号:
#include <stdio.h>
#include <string.h>
void mk(int key[],int tmpl[],int id[],int pos[],int base[],int len[],int n)
{
for(int j=0;j<n;j++)
key[j]--;
int ok[202]={0};
for(int i=0,cnt=0,cur=0;i<n;i++)
{
if(ok[i])continue;
base[cnt]=cur;
int j=i,ln=0;
do
{
ok[j]=1;
tmpl[cur]=j;
id[cur]=cnt;
pos[cur++]=ln++;
j=key[j];
}while(i!=j);
len[cnt++]=ln;
}
}
int main()
{
int n;
while(scanf("%d",&n),n)
{
int key[202],tmpl[202],id[202],pos[202],base[202],len[202];
for(int i=0;i<n;i++)
scanf("%d",&key[i]);
mk(key,tmpl,id,pos,base,len,n);
int k;
while(scanf("%d",&k),k)
{
char s[202];memset(s,32,sizeof(s));
getchar();gets(s);s[strlen(s)]=32;
char m[202];
for(int i=0;i<n;i++)
m[tmpl[base[id[i]]+(pos[i]+k)%len[id[i]]]]=s[tmpl[i]];
m[n]=0;
printf("%s\n",m);
}
printf("\n");
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -