[工程师死绝的世界C3003]学べない学校 翻译及题解

[工程师死绝的世界C3003]学べない学校 翻译及题解

没有学生的学校

Translation by KSkun

原题:問題「学べない学校」 | エンジニアが死滅シタ世界 〜アンドロイドとふたりぼっちで生きろ〜

问题描述

学校里的孩子们在玩剪刀石头布。特别是A君和B君,每天都要来上几盘,两人争来争去非要比个高下。
你知道了两个人的游戏记录,他们想让你写一个程序来判定他们谁最强。
A君和B君一共进行了N次游戏。
你知道了他们进行的游戏次数N以及每一次的状况,你需要写一个统计A君和B君获胜次数的程序。

剪刀石头布有三种手势:剪刀、石头、步。
石头可以赢剪刀,剪刀赢布,布赢石头。

输入中:

  • 石头用g表示
  • 剪刀用c表示
  • 布用p表示

样例1的说明如下图所示。

botchi c 3003 img - [工程师死绝的世界C3003]学べない学校 翻译及题解

输入格式

N 
a_1 b_1 
a_2 b_2 
... 
a_N b_N
  • 第一行包含一个整数N,表示A君和B君游戏的次数。
  • 接下来的N行,每行包含两个用半角空格分开的字符a_i和b_i,分别代表A君和B君的出法(字符对应出法参见问题描述)。
  • 输入共N + 1行,在输入的最后,包含一个换行符。

输出格式

以以下的格式分别输出A君和B君获胜的次数。

w_a 
w_b
  • 输出应该包含2行。
  • 第一行输出一个整数w_a,表示A君获胜的次数。
  • 第二行输出一个整数w_b,表示B君获胜的次数。
  • 输出的最后应该包含一个换行符。

条件

  • 1 ≦ N ≦ 1000
  • a_i和b_i只可能是gcp中的一种。

输入输出样例

输入输出样例1

输入:

3 
g g 
c p 
p g

输出:

2 
0

输入输出样例2

输入:

10 
p g 
c c 
p p 
g g 
c p 
c p 
g g 
p p 
g p 
p g

输出:

4 
1

题解

// Code by KSkun, 2019/1
#include <cstdio>
#include <cctype>

#include <algorithm>

typedef long long LL;

inline char fgc() {
    static char buf[100000], *p1 = buf, *p2 = buf;
    return p1 == p2 && (p2 = (p1 = buf) + fread(buf, 1, 100000, stdin), p1 == p2)
        ? EOF : *p1++;
}

inline LL readint() {
    LL res = 0, neg = 1; char c = fgc();
    for(; !isdigit(c); c = fgc()) if(c == '-') neg = -1;
    for(; isdigit(c); c = fgc()) res = res * 10 + c - '0';
    return res * neg;
}

inline char readsingle() {
    char c;
    while(!isgraph(c = fgc())) {}
    return c;
}

inline int win(char a, char b) {
    if(a == b) return 0;
    if(a == 'g' && b == 'c') return 1;
    if(a == 'c' && b == 'p') return 1;
    if(a == 'p' && b == 'g') return 1;
    return -1;
}

int n, cnta = 0, cntb = 0;
char wa[5], wb[5];

int main() {
    scanf("%d", &n);
    for(int i = 1; i <= n; i++) {
        scanf("%s%s", wa, wb);
        int res = win(wa[0], wb[0]);
        if(res > 0) cnta++;
        else if(res < 0) cntb++;
    }
    printf("%d\n%d\n", cnta, cntb);
    return 0;
}


发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据