頭を柔らかくして考えよう。
問題概要
3 個の整数 から 2 個選んで和をとる。
この和の最大値を求めよ。
解法
3 個の整数 から 2 個選んだ和は
の 3 通りがある。これらの最大値を求めればよい。
#include <bits/stdc++.h> using namespace std; int main() { int A, B, C; cin >> A >> B >> C; cout << max({A + B, B + C, C + A}) << endl; }
頭を柔らかくして考えよう。
3 個の整数 から 2 個選んで和をとる。
この和の最大値を求めよ。
3 個の整数 から 2 個選んだ和は
の 3 通りがある。これらの最大値を求めればよい。
#include <bits/stdc++.h> using namespace std; int main() { int A, B, C; cin >> A >> B >> C; cout << max({A + B, B + C, C + A}) << endl; }
出力がややこしい......
税抜価格が 円の品物に対して、消費税 8% を乗せた税込価格と 206 円との大小比較をせよ。
(出力形式はリンク先から)
税込価格は (int)(1.08 * N)
で求めることができる。
#include <bits/stdc++.h> using namespace std; int main() { int N; cin >> N; int teika = (int)(1.08 * N); if (teika < 206) cout << "Yay!" << endl; else if (teika == 206) cout << "so-so" << endl; else cout << ":(" << endl; }
算数ではよくある「比」の問題
100mL あたり kcal のドリンクがある。
mL で何 kcal でしょうか?
求めるカロリーを kcal とする。比で表すと、次のようになる。
内項の積と外項の積は等しいから、
よって、
と求められる。
今回は浮動小数点型で計算しよう。出力するときも、小数点以下ある程度出すようにしよう。
#include <bits/stdc++.h> using namespace std; int main() { double A, B; cin >> A >> B; double res = A * B / 100; cout << fixed << setprecision(10) << res << endl; }
ジャンケンの問題。何気に将来非常によく出てくる構造を問う問題でもある。
3 人でジャンケンをしたらあいこになった。3 人のうちの 2 人の出した手がわかっている。残り 1 人の手を答えよ。
なお、0 はグー、1 はチョキ、2 はパーを表す。
0, 1, 2 のいずれかであるような 3 つの数 が
という条件を満たすとき、2 つの値が決まれば残り 1 つが自動的に決まる。この考え方、より難しい問題で結構出てくる。
ここでは、素直に考えよう。
#include <bits/stdc++.h> using namespace std; int main() { int x, y; cin >> x >> y; if (x == y) cout << x << endl; else cout << 3 - (x + y) << endl; }
慎重に場合分けしよう!
3 個の整数 が与えられる。
これらのうち 2 個が等しい場合には、残りの 1 個の整数を答えよ。
3 個すべて互いに相異なる場合には、0 と答えよ。
3 個の整数 のうち、2 個が等しいというのは、次の 3 パターンが考えられる。3 個すべて等しい場合もあるが、次の 3 パターンのいずれかとみなして差し支えない。
a == b
であるとき (答えは c
)b == c
であるとき (答えは a
)a == c
であるとき (答えは b
)このいずれでもない場合には、0 を出力すればよい。
#include <bits/stdc++.h> using namespace std; int main() { int a, b, c; cin >> a >> b >> c; if (a == b) cout << c << endl; else if (b == c) cout << a << endl; else if (a == c) cout << b << endl; else cout << 0 << endl; }