A22564. 接网线(line)
填空题
较难
知识点
题目描述
接网线(line)
题目描述
小Q在接网线,网线里有八个颜色不同的小数据线组成,我们把颜色定义为ABCDEFGH 八种颜色。小Q的网线和正常的网线不同,小Q的网线只能传输整数序列,并且以每八个数字一组,传入时按八个一组顺序传入,传出时八个数字会根据颜色重新排序。

现在告诉你输入端的八个颜色顺序,再告诉你输出端的八个颜色顺序,你能不能计算出输入一个序列后对应会输出什么序列?
输入格式
第一行输入一个字符串,由A到H八个大写字母组成,表示输入端的颜色顺序。
第二行输入一个字符串,由A到H八个大写字母组成,表示输出端的颜色顺序。
第三行输入一个整数n,表示整数序列的长度,保证n是8的倍数。
第四行输入n个整数,表示输入的数字序列。
输出格式
输出一行n个整数,整数之间以一个空格隔开,表示输出的序列。
样例输入1
ABCDEHGF
BCADEHGF
8
3 1 4 1 5 9 2 6样例输出1
1 4 3 1 5 9 2 6样例输入2
DCEFAHGB
CHGBADFE
24
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24样例输出2
2 6 7 8 5 1 4 3 10 14 15 16 13 9 12 11 18 22 23 24 21 17 20 19参考答案
#include<bits/stdc++.h>
using namespace std;
int a[1005];
int main(){
string s1,s2;
int n;
cin>>s1>>s2>>n;
for(int i=0;i<n;i++){
cin>>a[i];
}
for(int i=1;i<=n/8;i++){//8个数据一组,处理n/8组
for(int j=0;j<8;j++){//遍历输出字符串,依次查找对应字母在输入顺序中的位置。
for(int k=0;k<8;k++){
if(s2[j]==s1[k]){//输出数据第i组的第j个数据,应该参照输入顺序的第k个位置
cout<<a[8*(i-1)+k]<<" ";//第i组第k个数据,在原数组中应该是8*(i-1)+k的数据
break;
}
}
}
}
return 0;
}
上一题
下一题