A - X に最も近い値 (The Nearest Value) Editorial
by
TumoiYorozu
この解説は、C++ に入門したばかりの中高生レベルを想定して、考察の方法、コードの書き方の解説をします。
まず、入力例1 を詳しく考えてみよう。
入力例1 では \(X=8, L=3, R=6\) であった。
3~6 の範囲の整数に対して、X=8 との差を考えると
| 値 | Xとの差 |
|---|---|
| 3 | 5 |
| 4 | 4 |
| 5 | 3 |
| 6 | 2 ← |
となり、 6 のときが最も X との差が少ない。
次は入力例 2 の場合である。
3~10 の範囲の整数に対して、X=7 との差を考えると
| 値 | Xとの差 |
|---|---|
| 3 | 4 |
| 4 | 3 |
| 5 | 2 |
| 6 | 1 |
| 7 | 0 ← |
| 8 | 1 |
| 9 | 2 |
| 10 | 3 |
となり、 7 のときが最も X との差が少ない。
この問題は if 文を用いて場合分けを行うことで求める事ができる。 X が L~R の範囲に含まれている場合、含まれていない場合、…など場合分けをして考えてみよう。
具体的には、以下の3つのケースに場合分けをすれば良い。 L 以上 R 以下のうち、最も X との差が小さい整数は コード例 ヒント1: 考察の為のヒント
ヒント2: 場合分けのしかた
ヒント3: 解き方の考察
解答コード
#include <bits/stdc++.h>
using namespace std;
int main(){
int X, L, R;
cin >> X >> L >> R;
if (X <= L) {
cout << L << endl;
} else if(R <= X) {
cout << R << endl;
} else {
cout << X << endl;
}
}
posted:
last update:
