萌萌哒表情符号通常由“手”、“眼”、“口”三个主要部分组成。简单起见,我们假设一个表情符号是按下列格式输出的:
1 |
[左手]([左眼][口][右眼])[右手] |
现给出可选用的符号集合,请你按用户的要求输出表情。
输入格式:
输入首先在前三行顺序对应给出手、眼、口的可选符号集。每个符号括在一对方括号[]内。题目保证每个集合都至少有一个符号,并不超过10个符号;每个符号包含1到4个非空字符。
之后一行给出一个正整数K,为用户请求的个数。随后K行,每行给出一个用户的符号选择,顺序为左手、左眼、口、右眼、右手——这里只给出符号在相应集合中的序号(从1开始),数字间以空格分隔。
输出格式:
对每个用户请求,在一行中输出生成的表情。若用户选择的序号不存在,则输出“Are you kidding me? @\/@”。
输入样例:
1 2 3 4 5 6 7 8 |
[╮][╭][o][~\][/~] [<][>] [╯][╰][^][-][=][>][<][@][⊙] [Д][▽][_][ε][^] ... 4 1 1 2 2 2 6 8 1 5 5 3 3 4 3 3 2 10 3 9 3 |
输出样例:
1 2 3 4 |
╮(╯▽╰)╭ <(@Д=)/~ o(^ε^)o Are you kidding me? @\/@ |
这道题,也有坑……
之后一行给出一个正整数K,为用户请求的个数。随后K行,每行给出一个用户的符号选择,顺序为左手、左眼、口、右眼、右手——这里只给出符号在相应集合中的序号(从1开始),数字间以空格分隔。
从 1 开始,但是测试数据被没有被限制在该范围内,所以应过滤输入,第 1 2 测试点就针对是这种情况吧。
代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
#include<stdio.h> #include<string.h> int main() { char emotion[3][11][5],buf[60],*pbuf=buf,flag=0; int k,i,j,n,offset[3],index; for(i=0;i<3;i++) { gets(buf); pbuf=buf; offset[i]=0; while(*pbuf) { while(*pbuf!='['&&*pbuf!=0) { pbuf++; } if(*pbuf==0) { break; } pbuf++; j=1; while(*(pbuf+j)!=']') { j++; } *(pbuf+j)=0; strcpy(emotion[i][offset[i]++],pbuf); pbuf+=j; //*pbuf=']'; pbuf++; } } scanf("%d",&k); for(i=0;i<k;i++) { flag=0; pbuf=buf; for(j=0;j<5;j++) { scanf("%d",&index); if(flag) { continue; } if(index-1>=offset[j>2?4-j:j]||index<1)//注意符号选择从 1 开始,需要过滤,测试点 1 2 针对的就是这种情况 { printf("Are you kidding me? @\\/@\n"); flag=1; } else { strcpy(pbuf,emotion[j>2?4-j:j][index-1]); pbuf+=strlen(emotion[j>2?4-j:j][index-1]); if(j==0) { *(pbuf++)='('; } if(j==3) { *(pbuf++)=')'; } } } *pbuf=0; if(!flag) { printf("%s\n",buf); } } } |