意外と頭がこんがらがるかもしれないですね。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; }