3 つの整数についてあれこれ問う問題はこの時代多かった
問題概要
3 個の整数 がある。これらは 1 以上 100 以下の整数である。
これらの整数の種類数を求めよ。
コード
この手の問題は、「配列として受け取ってソートする」テクニックが使える。たいていの問題は、まずソートしてしまっても答えが変わらないことが多く、しかも考えやすくなることが多い。よって「まずソートしてしまう」は、とても使えるテクニックとなる。
ソートした配列を v[0]
, v[1]
, v[2]
とすると、次のように考えられる。
- もし
v[0] == v[2]
だったら、3 つ全部等しいので、答えは 1 v[0] == v[1]
でv[1] < v[2]
だったら、答えは 2v[0] < v[1]
でv[1] == v[2]
だったら、答えは 2- それ以外は、すべて異なるので、答えは 3
#include <bits/stdc++.h> using namespace std; int main() { vector<int> v(3); cin >> v[0] >> v[1] >> v[2]; // 小さい順に並び替える sort(v.begin(), v.end()); if (v[0] == v[2]) cout << 1 << endl; else if (v[0] == v[1] && v[1] < v[2]) cout << 2 << endl; else if (v[0] < v[1] && v[1] == v[2]) cout << 2 << endl; else cout << 3 << endl; }