古き良き、ABS にも収録した問題!
問題概要
個の整数
が与えられる。
これらの整数の中に、相異なる整数は何種類あるかを求めよ。
制約
解法
最も簡単な方法は、集合型 set
型を用いる方法だと思われる。set
は
- 要素の挿入 (集合に要素
を挿入する)
- 要素の削除 (集合から要素
を削除する)
- 要素の検索 (集合に要素
が含まれるかを判定する)
といった処理を高速に実行できるものだ。C++ の場合、それぞれ insert()
、erase()
、count()
で実行できる。
詳しくは次の記事にも書いています。
コード
#include <iostream> #include <set> using namespace std; int main() { int N; int d[110]; cin >> N; for (int i = 0; i < N; ++i) cin >> d[i]; set<int> values; // insert するときに重複を取り除いてくれます for (int i = 0; i < N; ++i) { values.insert(d[i]); // 挿入します } // set のサイズを出力します cout << values.size() << endl; }