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

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

AtCoder ABC 268 A - Five Integers (7Q, 灰色, 100 点)

ちょっと整理が難しいかもしれない。

問題概要

5 個の整数  A, B, C, D, E が与えられる。これらの整数の中に何種類の整数があるかを答えよ。

考えたこと

次のように考える。なお、答えを格納する変数を res とする。


  • まず整数  A のみを考えると、整数は 1 種類である(res = 1 とする)
  • 次に、もし  B \neq A であるならば、整数の種類数は 1 増える(++res とする)
  • 次に、もし  C \neq A かつ  C \neq B であるならば、整数の種類数は 1 増える(++res とする)
  • 次に、もし  D \neq A かつ  D \neq B かつ  D \neq C であるならば、整数の種類数は 1 増える(++res とする)
  • 最後に、もし  E \neq A かつ  E \neq B かつ  E \neq C かつ  E \neq D であるならば、整数の種類数は 1 増える(++res とする)

あとは、上記の手続きを実装すればよい。

コード

#include <bits/stdc++.h>
using namespace std;

int main() {
    int A, B, C, D, E, res = 1;
    cin >> A >> B >> C >> D >> E;

    if (B != A) res++;
    if (C != B && C != A) res++;
    if (D != A && D != B && D != C) res++;
    if (E != A && E != B && E != C && E != D) res++;
    cout << res << endl;
}