Problem 1007 - 做一名正气的西电人

Description

  一天,wm和zyf想比比谁比较正气,但正气这种东西无法量化难以比较,为此,他们想出了一个方法,两人各写一个数字,然后转化为二进制,谁的数字中二进制1多谁就比较正气!

Input

  输入包含多组数据,EOF结束。 
  每组数据包含两行,代表两个非负整数a,b(0<=a,b<10^100,不含前导0),a为wm写的数字,b为zyf写的数字。

Output

  每组数据输出一行,输出正气的西电人名字"wm"或"zyf",如果两人的数字中二进制1一样多就输出"neither"。

Sample Input

15
16
17
18
20
19

Sample Output

wm
neither
zyf

Hint

Source

2010.04内部测试赛(Author: Qinz)

#include <stdio.h>
#include <string.h>

int count(char a[])
{
    int cur, pre;
    int i = 0, j = 0, count = 0;
    pre = 0;
    int len_a = strlen(a);
    while (j < len_a){
        for(i = j; i < len_a; ++i)
        {
            cur = a[i] - '0';
            a[i] = (pre * 10 + cur)/2 + '0';
            pre = cur%2;
        }
        if(pre == 1)
            count++;
        if(a[j] == '0')
            j++;
        pre = 0;
    }
    return count;
}

int main()
{
    char a[101], b[101], result[101]="";
    int counta, countb;
    while(gets(a) != NULL && gets(b) != NULL)
    {
        counta = count(a);
        countb = count(b);
        if(counta > countb)
            strcat(result, "wm\n");
        else if(counta < countb)
            strcat(result, "zyf\n");
        else
            strcat(result, "neither\n");
    }
    printf("%s", result);
    return 0;
}

#include <stdio.h>
int x, y;
char a[101];
int operate()
{
    int l, i, j, ret = 0;
    for (l = 0; a[l] && a[l] != '\n'; ++l)
        a[l] -= '0';
    for (i = 0, j = --l; i < j; ++i, --j) {
        a[i] ^= a[j];
        a[j] ^= a[i];
        a[i] ^= a[j];
    }
    while (l || a[0]) {
        for (ret += a[0] & 1, i = l, j = 0; i >= 0; --i) {
            j = j * 10 + a[i];
            a[i] = j >> 1;
            j &= 1;
        }
        while (l && !a[l])
            --l;
    }
    return ret;
}
int main()
{
    while (gets(a)) {
        x = operate(a);
        gets(a);
        y = operate(a);
        if (x == y)
            puts("neither");
        else
            if (x > y)
                puts("wm");
            else
                puts("zyf");
    }
    return 0;
}

#include<stdio.h>
#define MAXSIZE 100

void record(char c[],int *zero,int *sum);

int main()
{
    char a[MAXSIZE+1],b[MAXSIZE+1];
    int suma,sumb;
    int zeroa,zerob;

    while (scanf("%s%s",a,b)!=EOF)
    {
        for (zeroa=0,suma=0,zerob=0,sumb=0;a[zeroa]!='\0' || b[zerob]!='\0';)
        {
            record(a,&zeroa,&suma);
            record(b,&zerob,&sumb);
        }
        if (suma == sumb)
            printf("neither\n");
        else
            if (suma > sumb)
                printf("wm\n");
            else
                printf("zyf\n");
    }
    return 0;
}
void record(char c[],int *zero,int *sum)
{
    int i=*zero,x=0,t;

    while (c[i]!='\0')
        {
            t=c[i]-'0'+x*10;
            x=t%2;
            t/=2;
            c[i]=t+'0';
            i++;
        }
    if (1==x)
        (*sum)++;
    while (c[*zero]=='0')
        (*zero)++;
}

#include<stdio.h>
#include<string.h>
char s1[300],s2[300];
int num[300];
int cals(char s[])
{
    int len,i,x,sum=0;
    len=strlen(s);
    for(i=0;i<len;i++)
        num[i]=s[len-i-1]-'0';  //逆序存入int型数组
    while(len!=0)    //数组长度为0时跳出循环
    {
        for(i=len-1;i>0;i--)  //模拟转化过程
        {
            x=num[i]%2;
            num[i]/=2;
            num[i-1]+=10*x;
        }
        sum+=num[0]%2;  //计数
        num[0]/=2;
        for(i=len-1;num[i]==0&&i>=0;i--) len--;  //若高位为0则缩短数组长度,如120->60,长度就缩了1
    }
    return sum;
}
int main()
{
    int len1,len2,i;
    while(scanf("%s%s",s1,s2)!=EOF)
    {
        len1=cals(s1);
        len2=cals(s2);
        printf("%s\n",len1>len2?"wm":len1==len2?"neither":"zyf");  //比较长度后按要求输出
    }
    return 0;
}
时间: 2024-09-28 07:08:08

Problem 1007 - 做一名正气的西电人的相关文章

人人网友实拍《当西电人失去了椅子》

如果这个世界没有了椅子会怎样?你会找怎样的替代物?最近,<当西电人失去了椅子>的相册在人人网上疯传.发帖人称因为要举行校庆,西安电子科技大学的宿舍中所有椅子在前一晚都被搬到了主会场,于是同学们发挥了各种想象力,找来了各种椅子替代物, 网友们纷纷称"人类已经阻止不了西电人". 椅子全被"挪用"了 记者看到,这组相册最初由西安电子科技大学的学生上传至人人网,被有同样遭遇的校友转发后,很快受到了各地大学生的关注. 10月15日上午,西安电子科技大学举行建校80

HDOJ(HDU) 2500 做一个正气的杭电人(水~)

Problem Description 做人要有一身正气,杭电学子都应该如此.比如我们今天的考试就应该做到"诚信"为上. 每次考试的第一个题目总是很简单,今天也不例外,本题是要求输出指定大小的"HDU"字符串,特别地,为了体现"正气"二字,我们要求输出的字符串也是正方形的(行数和列数相等). Input 输入的第一行包含一个正整数N(N<=20),表示一共有N组数据,接着是N行数据,每行包含一个正整数M(M<=50),表示一行内有M个

做一名全面发展的高校教师——“计算机系统”课学习总结

以前听过陈老师和臧老师的报告,很想继续深入了解这两门内容跨度大,意在提高学生综合能力的课.接到"导教班"通知,发现可以将两门课"一网打尽",也很荣幸地被录取了. 相对而言,"计算机问题求解"课程的内容熟悉一些,而"计算机系统"方面却不自信,尤其面向机器的那一端.工作以后在计算理论.软件设计方面做的工作多一些,底层的知识很生疏,再加上具体技术的发展很快,更新知识结构的愿望很强烈.再一个知道这门课注重与程序设计.操作系统.编译原理

如何做一名称职的托儿有效助推游戏付费

随着科学技术的发展,网络游戏从端游.页游发展到手游,依托不同的设备以不同形式展现,但游戏的类型和玩法被保留,而托儿做为游戏运营里不可或缺的营销手段,成为助推游戏付费提升的马车之一经久不衰. 托儿,游戏行业公开的秘密,模式成熟的营销手段.几乎所有游戏厂商,都在游戏中投放有托儿,但业内认可并不代表玩家接受,游戏中高付费玩家把游戏公司告上法院的新闻,屡见不鲜.在法律上,玩家掌握确凿证据证明游戏公司安排"托号",可以游戏公司涉嫌诈骗报案. 所以,游戏中托儿的投放,是走钢丝上的艺术.如何投放托儿

如何做一名合格的网络编辑者

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 据数据显示表明,中国的网络编辑人员近300万,网络编辑已经列为新行业前十,这一数据让很多从事网络编辑以及其他行业的朋友感到很吃惊,可想而知,网络编辑已经成为互联网中不可缺少的职位,它的重要性已经逐渐提升.如何做一名合格的网络编辑者,这无疑需要考验编辑者的写作功底,同时必须依靠丰富经验,以内容的方式将信息展现给用户.作为一名合格的网络编辑者需要

如何做一名成功创业者的七种办法

生活中我们见过各式各样的人,大致上可以把他们分成三类:旁观者.失败者.成功者.纵观古今,成大事者都是有远见.高瞻远瞩的人.卓越的远见可以给创业者带来巨大的利益,帮他们捕捉不可思议的机会.作为一名创业者,谁都希望自己成功.如何做一名成功的创业者,这里有如下方法: 确定你的远见.你的远见不能由别人给你,你必须确定你人生的远见. 为大规划放弃小选择.实现自己的创业目标是要付出代价的,你不可能一面追求此种选择,一面又保留着其他选择. 不断超越自我.只付出一般的努力是实现不了理想的.你需要献身精神和不懈的

第九届西电ACM校赛解答

Description 欢迎参加西电第九届ACM校内赛!作为一名经历了四届校赛的ACM老队员以及本次校赛的出题人,每次校赛都让我有一种全新的感受--有第一次参加校赛时提交代码时紧张到双手发抖,也有当裁判时看到有些不明真相的人提交编译后程序时的欢乐.不管你是第几次参赛,好好享受这一刻带给你的各种感受,经历就是一种财富.为了让大家更好地记住这悲喜交加的日子,特意准备了这么一道题: 给你一个日期,你只要输出这个日期是在校赛前还是校赛后,或者刚好就是校赛那一天(2011年5月22号). 题目是什么意思呢

遇见物联,西电开启智慧校园新大门

|你对学校停留在什么阶段呢? 80后的工作小伙伴对于大学生活渐渐有点陌生,只记得斑驳落叶,饭点带饭,上课代到,钥匙忘带,被锁门外,PC互联网值得炫耀,拥有iPhone更是欢喜-- |现如今,00后都已经迈入了大学校门,他们的表达方式更是多元且独一无二的.更为年轻的00后,已经习惯在各种智能硬件以及虚拟现实中自如切换,这侧面体现了年轻人对智能硬件和无人驾驶等黑科技的欣然接纳. |那么,作为行业领军者的新华三,是不是应该做点什么呢? 下面讲个小案例: 早上宿舍里,被闹钟叫醒,APP一键开启宿舍灯光.

以智慧校园为起点 西电携手新华三发掘信息化价值

教育部下发的教育信息化十年发展规划中明确指出,要通过信息技术与教育全面深度融合,促进教育的创新.改革和发展.西安电子科技大学(以下简称:西电)十分重视高校信息化建设,在近日召开的2017高校信息技术融合应用研讨会上,西安电子科技大学副校长杨银堂指出,一流的大学建设,一流的人才培养,离不开一流的信息化建设. 为了加快推进信息化的支撑与保障作用,研讨会期间,西电与新华三签署智慧校园共建项目合作备忘录,双方将在校园大数据平台.物联网平台.云计算平台.信息安全建设及应用实践等领域开展广泛的合作. (新华