記念すべき「JOI 一次予選」が最初に行われた年の問題。この頃はまだ A 問題も結構難しかったのですね。
問題概要
3 個の整数 が与えられる。これらの整数は 1 か 2 のいずれかである。
1 と 2 のうち、どちらの方が多くあるかを判定せよ。
解法
まず、次の値を求めるとよいでしょう。
one
← 1 が何個あるか
これは、A
, B
, C
それぞれについて、1 であるかどうかを判定し、1 であれば one
をインクリメントすることで実現できます。たとえば C++ では次のように実装できます。
ine one = 0; if (A == 1) one++; if (B == 1) one++; if (C == 1) one++;
1 の個数 one
を求めると、2 の個数 two
も次のように自動的に求められます。
int two = 3 - one;
あとは、one
と two
の大きさを比較して、one
の方が大きい場合には 1 を出力し、two
の方が大きい場合には 2 を出力すればよいでしょう。
コード
#include <bits/stdc++.h> using namespace std; int main() { int A, B, C; cin >> A >> B >> C; // 1 の個数を求める int one = 0; if (A == 1) one++; if (B == 1) one++; if (C == 1) one++; // 2 の個数を求める int two = 3 - one; // 比較して答える if (one > two) cout << 1 << endl; else cout << 2 << endl; }