いろんな方法が考えられる超典型問題
問題概要
長さ の整数数列
が与えられる。
この数列に含まれる整数の種類数を答えよ。
制約
解法
set
型の知識があれば、それを用いるのが最も楽だと思う (他の方法は公式解説を参照)。C++ の set
型を用いると、
- 値
を集合
に挿入する処理:
S.insert(x)
- 集合
に含まれる整数の個数を求める処理:
S.size()
と書ける。すでに が
に含まれているときは、
は変化しない。
よって、次のように問題が解ける。
を順に集合
を挿入する
- 集合
に含まれる整数の個数を答える
コード
#include <bits/stdc++.h> using namespace std; int main() { int N; cin >> N; set<int> S; for (int i = 0; i < N; ++i) { int a; cin >> a; S.insert(a); } cout << S.size() << endl; }