Yuulis.log

Yuulis.log

トンネルを抜けるとそこは参照エラーであった。

【AtCoder】ABC 392 A - Shuffled Equation | 緑コーダーが解くAtCoder

atcoder.jp

配点: 100 点 / 実行時間制限: 2 sec / メモリ制限: 1024 MB / Difficulty: 11

問題概要

整数列  A=(A_1,A_2,A_3) が与えられる。  A の要素を自由に並べ替えた列を  B=(B_1,B_2,B_3) とするとき、  B_1 \times B_2 = B_3 を満たすようにできるか判定せよ。

制約

  •  1 \le A_1,A_2,A_3 \le 100

考察

 B としてあり得るパターンは6通りあるが、  B_1 \times B_2 の値は  B_1 B_2 を入れ替えても変わらない(乗法の交換法則)ので、考えるのは実質3通りで良い。

したがって、以下の3つのうちいずれか1つでも成り立てば答えはYes、そうでなければNoと判定できる。

  •  A_1 \times A_2 = A_3
  •  A_1 \times A_3 = A_2
  •  A_2 \times A_3 = A_1


ちなみに、  A の要素は全て正なので、  A_1, A_2, A_3 を昇順ソートすれば、一番上のパターンだけを判定するので十分。

実装例

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

// ======================================== //

int main()
{
    int A1, A2, A3;
    cin >> A1 >> A2 >> A3;

    if (A1 * A2 == A3 || A1 * A3 == A2 || A2 * A3 == A1)
    {
        cout << "Yes" << endl;
    }
    else
    {
        cout << "No" << endl;
    }

    return 0;
}

atcoder.jp

実装時間: 5分以内

コメント

場合分けはできるだけ減らすのが鉄則。