2019年广东工业大学腾讯杯新生程序设计竞赛(同步赛)C-秘密的议会

链接: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;
}
发布了12 篇原创文章 · 获赞 6 · 访问量 698

猜你喜欢

转载自blog.csdn.net/weixin_45696526/article/details/105282667