先看看题目
农夫John在教他的奶牛跳一种舞蹈,每跳一次舞都要按给定的规则进行位置的变换。他首先把奶牛按一定的顺序排成一行,再按这种舞蹈的规则进行位置的变换,经过3次的位置变换后,会得到一个新的顺序。John给每头奶牛编了一个7位数字的编号,并给出舞蹈的规则,已知奶牛3次舞蹈各位置的奶牛编号,问在跳舞前这些奶牛的位置。
输入格式:
第一行一个整数N(N<=100),表示奶牛的数量。
第二行是N个1-N以内的整数ai,表示每次第i头牛移动到第ai的位置。
第三行是N个7位数字的编号,按顺序给出跳了3次舞后各奶牛的编号。
输出格式:
输出N行,表示跳舞前各位置的奶牛编号。
输入样例:
5
1 3 4 5 2
1234567 2222222 3333333 4444444 5555555
输出样例:
1234567
5555555
2222222
3333333
4444444
样例解释:
有5头奶牛,每次跳舞时第一头奶牛会在第1位,第2头奶牛到第3位,第3头奶牛到第4位,第4头奶牛到第5位,第5头奶牛到第2位,跳完3次舞,第一位的奶牛时1234567…………,那么在跳舞前第一头奶牛是1234567,第二头奶牛是5555555……。
非常简单哈,代码就不注释了
#include<bits/stdc++.h>
using namespace std;
int n,a[1000],b[1000],c[1000],d[1000],e[1000];
int main(){
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i];
for(int i=1;i<=n;i++) cin>>b[i];
for(int i=1;i<=n;i++) c[i]=b[a[i]];
for(int i=1;i<=n;i++) d[i]=c[a[i]];
for(int i=1;i<=n;i++) e[i]=d[a[i]];
for(int i=1;i<=n;i++) cout<<e[i]<<endl;
return 0;
}