A - 帰省 (Homecoming) Editorial by TumoiYorozu
この解説は、C++ に入門したばかりの中高生レベルを想定して、考察の方法、コードの書き方の解説をします。
問題の考察
ビ太郎がビバ子に会えるための必要十分条件は \(A \leqq C < B\) である。したがって、if 文などを用いてこれを判定すればよい。
C++での書き方
考察を読んで解き方にピンと来たら、試してみよう! もっとヒントが欲しいときはここをクリックして開いてね
C++ では、$\leqq$ は `<=` を使って比較をする。
式のとおりに条件式を書くと `A <= C < B` になるが、C++ では比較演算子は 2 つの値の比較しかできないので、3つの値を連続して比較することはできない。
このときは、`A<=C` かつ `C < B` と、 2 つの値の比較を2回行う事で解決できる。C++ で 『かつ』は `&&` を使う。
よって、`A<=C && C < B` とすると、条件式を作ることが出来る。
コード例
(実際の提出のリンクはこちら) また、変数answerを使わずに、if文の中で直接答えを出力しても良い。 if 文の中に if 文を更に書くことで目的を達成することも出来る。 これにより複雑な条件を、 今回の問題ではあまり推奨はしないが、この様なテクニックが有効活用できることもあるので、覚えておくとよいだろう。 9 行目は、\(A\leqq C < B\) のときに実行される。 11 行目は、\(A\leqq C \) だが \(C<B\) では無かった時、 つまり\(A<B\leqq C\)のときに実行される。 14 行目は、\(A\leqq C \) では無かった時、 つまり \(C < A < B\) のときに実行される。
解答コード
#include <bits/stdc++.h>
using namespace std;
int main(){
// int 型の変数(箱)を4つ作る
int A, B, C, answer;
// cin で入力を受け取ることができる。「>>」で区切ること(<<ではない)
cin >> A >> B >> C;
// 「A ≦ C < B」 は 「A ≦ C かつ A < B」と比較をする。
if (A <= C && C < B) {
answer = 1;
} else {
answer = 0;
}
// cout を使うと答えを出力することが出来る。「<<」で区切ること(>>ではない)
// endl で改行する。
cout << answer << endl;
}
#include <bits/stdc++.h>
using namespace std;
int main(){
int A, B, C;
cin >> A >> B >> C;
if (A <= C && C < B) {
cout << 1 << endl;
} else {
cout << 0 << endl;
}
}
&& を使わずに、if文の内側にif文を書く別解
&&
を使わず比較的シンプルな機能のみを使って表現する事ができる。#include <bits/stdc++.h>
using namespace std;
int main(){
int A, B, C;
cin >> A >> B >> C;
if (A <= C) {
if(C < B) {
cout << 1 << endl;
} else {
cout << 0 << endl;
}
} else {
cout << 0 << endl;
}
}
posted:
last update: