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

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

AtCoder ABC 385 A - Equally (7Q, 灰色, 100 点)

場合分けを頑張ろう!

問題概要

3 つの整数  A, B, C をいくつかのグループに分けて、各グループに含まれる整数の総和を等しくできるかを判定せよ。

考えたこと

次の 2 つの場合が考えられる。

  • 2 つのグループに分けて、総和を等しくする
  • 3 つのグループに分けて、総和を等しくする

前者については、さらに次の 3 つに分かれる。いずれかの条件を満たせば良い。

  •  A = B + C
  •  B = C + A
  •  C = A + B

後者の条件は

  •  A = B = C

と書ける。C++ では if (A == B && B == C) などと書くことで判定できる。

コード

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

int main() {
    int A, B, C;
    cin >> A >> B >> C;

    if (A == B + C || B == C + A || C == A + B) {
        // 2 グループに分ける場合
        cout << "Yes" << endl;
    } else if (A == B && B == C) {
        // 3 グループに分ける場合
        cout << "Yes" << endl;
    } else {
        cout << "No" << endl;
    }
}