萌萌哒表情符号通常由“手”、“眼”、“口”三個主要部分組成。簡單起見,我們假設一個表情符号是按下列格式輸出的:
[左手]([左眼][口][右眼])[右手]
現給出可選用的符号集合,請你按使用者的要求輸出表情。
輸入格式:
輸入首先在前三行順序對應給出手、眼、口的可選符号集。每個符号括在一對方括号
[]
内。題目保證每個集合都至少有一個符号,并不超過 10 個符号;每個符号包含 1 到 4 個非空字元。
之後一行給出一個正整數 K,為使用者請求的個數。随後 K 行,每行給出一個使用者的符号選擇,順序為左手、左眼、口、右眼、右手——這裡隻給出符号在相應集合中的序号(從 1 開始),數字間以空格分隔。
輸出格式:
對每個使用者請求,在一行中輸出生成的表情。若使用者選擇的序号不存在,則輸出
Are you kidding me? @\/@
。
輸入樣例:
[╮][╭][o][~\][/~] [<][>]
[╯][╰][^][-][=][>][<][@][⊙]
[Д][▽][_][ε][^] ...
4
1 1 2 2 2
6 8 1 5 5
3 3 4 3 3
2 10 3 9 3
輸出樣例:
╮(╯▽╰)╭
<(@Д=)/~
o(^ε^)o
Are you kidding me? @\/@
注意點:
1.使用dev-c++時好幾個特殊符号輸入之後都沒有顯示,但在pat網站上就可以正常顯示,懷疑是特殊符号不是acs碼編譯器不顯示的問題,這裡不用太糾結。
2.輸入第四行可能為負數或0,記得判斷下限,可能導緻測試點2的運作時錯誤。
ac代碼:
#include<iostream>
#include<vector>
#include<map>
using namespace std;
map<int,int> mp;
int setM(){
mp[0]=0;
mp[1]=1;
mp[2]=2;
mp[3]=1;
mp[4]=0;
}
int main() {
int n,j;
setM();
string s,s1;
vector<string> v[3];
//輸入
for(int m=0; m<3; m++) {
getline(cin,s);
for(int i=0; i<s.length(); i++) {
if(s[i]=='[') {
s1="";
for(j=i+1; j<s.length(); j++) {
if(s[j]==']') {
break;
}
s1+=s[j];
}
v[m].push_back(s1);
i=j;
}
}
}
scanf("%d",&n);
while(n--) {
s1="";
for(int m=0; m<5; m++) {
scanf("%d",&j);
if(j>v[mp[m]].size()||j<1) {
s1="Are you kidding me? @\\/@";
break;
}
s1+=v[mp[m]][j-1];
if(!m){
s1+="(";
}
if(m==3){
s1+=")";
}
}
cout<<s1<<endl;
}
}