意外と頭がこんがらがるかもしれないですね。100 点問題で必須となるテクニックではないですが、ソートすると考えやすいと思います。
問題概要
個の整数
が与えられる。
これら 個の整数を適切に並び替えることで、等差数列にすることが可能かどうかを判定せよ。
制約
解法メモ (C++)
色々難しいことを考えないで済むようにするために、3 個の整数を小さい順に並び替えると良いと思います。
そのために、まず、3 個の整数を vector<int> 型の変数 A で受け取ることにします。このとき、3 個の整数は A[1], A[2], A[3] ではなく、A[0], A[1], A[2] となることに注意しましょう。
sort(A.begin(), A.end());
と書くことで、A は小さい順になります。
その後は簡単です。A[2] - A[1] == A[1] - A[0] であるかどうかを判定すればよいです。
コード
#include <bits/stdc++.h> using namespace std; int main() { // 入力受け取り (サイズ 3 の vector で受け取る) vector<int> A(3); cin >> A[0] >> A[1] >> A[2]; // ソートする sort(A.begin(), A.end()); // 判定する if (A[2] - A[1] == A[1] - A[0]) cout << "Yes" << endl; else cout << "No" << endl; }