链接:https://ac.nowcoder.com/acm/contest/3036/C
来源:牛客网
题目描述
「你来了啊,埃尔梅罗二世」
「是啊」他选择上浮的地点是一片荒野,那栋谜团重重的别墅正屹立在那荒芜的土地上「你到底在追求些什么」
「圣杯啊」他没有挂上之前那种虚伪的笑容,这种没有情感的真实让我想起了那一次圣杯战争「只要能做成万能的愿望机,到达根源也只是一蹴而就罢了」
「不可能的,圣杯需要时间」
「虚假(fake)的圣杯啊」他向我展示他的双臂,上面满是一些奇特的花纹,但我知道那是令咒,是作为御主(master)的象征「你来的时间比我想得要早,如果你想阻止我,可以尝试,我也不妨告诉你应该如何阻止我,但这几乎是不可能的」
虽然他的自大从之前就让人很不爽,但是为什么他甚至自信到把自己的弱点暴露出来。魔术的神秘一旦被洞察,就好像代码被开源一样。抛开这些不管,我也有不得不阻止他的理由。
他告诉了我一些信息,但是这些信息原本就被他加密过,只是加密手法并不高超,或是说他并没有故意想要阻碍我。只要我找到正确的解密方式就有办法阻止这场虚假的闹剧了。
而获得解密方式的方法也很简单,他给我的信息是一场投票的记录,`y`或`Y`表示某个平民对决议表示赞同,而`n`或`N`表示不赞同。其中混杂的其他信息则是弃权票。而我需要按照投票结果找出正确的解密方式。
输入描述:
第一行一个整数T (1<=T<=200),代表T组样例, 对于每组样例,输入一行,每行输入一个仅由大小写字符组成的字符串str,(1<=|str|<=100)。其中|str|代表字符串的长度。
输出描述:
若`Y`和`y`的票数大于等于总票数的一半,则输出"pmznb"。 否则,若`N`和`n`的票数大于等于总票数的一半,则输出"lyrnb" 否则输出"wsdd" (不包括双引号) (当总票数为奇数时,总票数的一半向下取整)
示例1
输入
1 yYnNp
输出
pmznb
说明
总票数为5张,总票数的一半为2张 由于Y和y的票数大于等于总票数的一半,输出"pmznb"。
代码
#include <stdio.h>
#include<stdlib.h>
int main(){
int m,*p,y=0,n=0,sum=0;
char c;
scanf("%d",&m);
getchar();
p=(int *)malloc(sizeof(int)*m);
for(int i=0;p+i<p+m;i++){
while( ( c=getchar() )!='\n' ){
sum++;
switch(c){
case 'y': case 'Y':y++;break;
case 'N': case 'n':n++;break;
}
}
if(y>=sum/2) *(p+i)=0;
else if(n>=sum/2) *(p+i)=1;
else *(p+i)=2;
sum=y=n=0;
}
for(int i=0;p+i<p+m;i++)
switch( *(p+i) ){
case 0: printf("pmznb\n");break;
case 1: printf("lyrnb\n");break;
case 2: printf("wsdd\n");break;
}
return 0;
}