Skip to content

1052 卖个萌

Statement

Metadata

  • 作者: CHEN, Yue
  • 单位: 浙江大学
  • 代码长度限制: 16 KB
  • 时间限制: 400 ms
  • 内存限制: 64 MB

萌萌哒表情符号通常由“手”、“眼”、“口”三个主要部分组成。简单起见,我们假设一个表情符号是按下列格式输出的:

[左手]([左眼][口][右眼])[右手]
现给出可选用的符号集合,请你按用户的要求输出表情。

输入格式

输入首先在前三行顺序对应给出手、眼、口的可选符号集。每个符号括在一对方括号 []内。题目保证每个集合都至少有一个符号,并不超过 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? @\/@

Solution

#include <bits/stdc++.h>
using namespace std;
struct pp {
    string s[10];
} q[3];
int main() {
    string s;
    int i, j, k, l, len, tot[3] = {0};
    for (i = 0; i < 3; i++) {
        getline(cin, s);
        // cout<<s<<endl;
        len = s.size();
        for (j = 0, l = 0; j < len; j++) {
            if (s[j] == '[') {
                // cout<<j<<endl;
                for (k = j + 1; s[k] != ']'; k++) {
                    q[i].s[l] += s[k];
                }
                // cout<<q[i].s[l]<<endl;
                l++;
                j = k;
            }
        }
        tot[i] = l;
        // cout<<l<<endl;
    }
    int t;
    cin >> t;
    while (t--) {
        s = "";
        int n[5], flag = 1, a[5] = {0, 1, 2, 1, 0};
        for (i = 0; i < 5; i++) cin >> n[i];
        for (i = 0; i < 5; i++) {
            n[i]--;
            if (n[i] > tot[a[i]] - 1 || n[i] < 0) {
                flag = 0;
                // cout<<"1\n";
                break;
            } else {
                s += q[a[i]].s[n[i]];
            }
            if (!i)
                s += "(";
            else if (i == 3)
                s += ")";
        }
        if (flag)
            cout << s << endl;
        else
            cout << "Are you kidding me? @\\/@\n";
    }
}

Last update: May 4, 2022
Back to top