A - Four Points Editorial by leaf1415
入力で与えられた \(3\) 点 \((x_1, y_1), (x_2, y_2), (x_3, y_3)\) に対し、長方形の残る \(1\) 点 \((x_{\mathrm{ans}}, y_{\mathrm{ans}})\) を求める方法を考えます。
まず、\(x_{\mathrm{ans}}\) を求めます。\(x_1, x_2, x_3\) は問題文中にある長方形の異なる \(3\) 頂点の \(x\) 座標であることから、\(x_1, x_2, x_3\) のうちどれか \(2\) つは等しいです。そして、残る \(1\) つは他の \(2\) つとは異なる値であり、これが \(x_{\mathrm{ans}}\) と等しいです。 すなわち、\(x_1 = x_2\) 、\(x_2 = x_3\) 、\(x_3 = x_1\) のうちちょうど \(1\) つが成り立ち、
- \(x_1 = x_2\) のとき、\(x_{\mathrm{ans}} = x_3\)
- \(x_2 = x_3\) のとき、\(x_{\mathrm{ans}} = x_1\)
- \(x_3 = x_1\) のとき、\(x_{\mathrm{ans}} = x_2\)
です。
\(y_{\mathrm{ans}}\) についても同様に、\(y_1 = y_2\) 、\(y_2 = y_3\) 、\(y_3 = y_1\) のうちちょうど \(1\) つが成り立ち、
- \(y_1 = y_2\) のとき、\(y_{\mathrm{ans}} = y_3\)
- \(y_2 = y_3\) のとき、\(y_{\mathrm{ans}} = y_1\)
- \(y_3 = y_1\) のとき、\(y_{\mathrm{ans}} = y_2\)
です。
よって、与えられた \((x_1, y_1), (x_2, y_2), (x_3, y_3)\) に対して、上記にしたがって \(x_{\mathrm{ans}}, y_{\mathrm{ans}}\) を計算して出力することでこの問題に正解できます。 「 \(x_1 = x_2\) のとき」に該当するかなどの判定には、プログラミング言語の標準的な機能である条件分岐の機能( if 文など)を用いることができます。
C++ 言語による正解例を以下に記載します。
#include <iostream>
using namespace std;
int main(void)
{
int x_1, x_2, x_3, y_1, y_2, y_3, x_ans, y_ans;
cin >> x_1 >> y_1;
cin >> x_2 >> y_2;
cin >> x_3 >> y_3;
if(x_1 == x_2) x_ans = x_3;
if(x_2 == x_3) x_ans = x_1;
if(x_3 == x_1) x_ans = x_2;
if(y_1 == y_2) y_ans = y_3;
if(y_2 == y_3) y_ans = y_1;
if(y_3 == y_1) y_ans = y_2;
cout << x_ans << " " << y_ans << endl;
return 0;
}
posted:
last update: