けんちょんの競プロ精進記録

競プロの精進記録や小ネタを書いていきます

AtCoder ABC 056 A - HonestOrDishonest (灰色, 100 点)

bool 型をうまく考える問題

問題概要

入力  a, b が与えられる。

  •  a = 'H' のとき:AtCodeer 君は正直者である
  •  a = 'D' のとき:AtCodeer 君は嘘つきである

ここで、

  •  b = 'H' のとき:「TopCoDeer 君は正直者だ」と AtCodeer 君は発言した
  •  b = 'D' のとき:「TopCoDeer 君は嘘つきだ」と AtCodeer 君は発言した

TopCoDeer 君が正直者か嘘つきかを判定せよ。

解法

一瞬頭が混乱する。整理すると、次の表のように整理できる。

 b = 'H'  b = 'D'
 a = 'H' 正直者 嘘つき
 a = 'D' 嘘つき 正直者

つまり、

  • a == b のとき、答えは 'H'
  • そうでないとき、答えは 'D'
#include <bits/stdc++.h>
using namespace std;

int main() {
    char a, b;
    cin >> a >> b;
    if (a == b) cout << "H" << endl;
    else cout << "D" << endl;
}