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

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

AtCoder ABC 204 A - Rock-paper-scissors (灰色, 100 点)

ジャンケンの問題。何気に将来非常によく出てくる構造を問う問題でもある。

問題概要

3 人でジャンケンをしたらあいこになった。3 人のうちの 2 人の出した手がわかっている。残り 1 人の手を答えよ。

なお、0 はグー、1 はチョキ、2 はパーを表す。

解法

0, 1, 2 のいずれかであるような 3 つの数  x, y, z

  •  x = y = z
  •  x, y, z がすべて互いに相異なる

という条件を満たすとき、2 つの値が決まれば残り 1 つが自動的に決まる。この考え方、より難しい問題で結構出てくる。

ここでは、素直に考えよう。

  •  x = y のとき、もう 1 人の手もそれらと同じなので  x を答えればよい。
  • そうでないとき、3 人の出した手を集めると 0, 1, 2 になるので、 3 - x - y を答えればよい。
#include <bits/stdc++.h>
using namespace std;

int main() {
    int x, y;
    cin >> x >> y;
    if (x == y)
        cout << x << endl;
    else
        cout << 3 - (x + y) << endl;
}