c语言Alice和Bob密码

如题所述

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;
}
}
温馨提示:答案为网友推荐,仅供参考
相似回答