测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

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; }
上一题 下一题