読者です 読者をやめる 読者になる 読者になる

JOI 2006 問題2

JOI大学のM教授はプログラミングの授業を担当している. クラスには30人の受講生がいて各受講生には1番から30番までの出席番号がふられている. この授業の課題を28人の学生が提出した. 提出した28人の出席番号から提出していない2人の出席番号を求めるプログラムを作成せよ.

 

配列を30人分用意して、読み込んだ数字の配列の箇所を1にする。

よって0になっている配列の数字を見れば、答えがわかる。

vectorをincludeすると連想配列を生成できる

 

#include <iostream>
#include <vector>
using namespace std;
int main() {
 int a[1000] = { 0 };//読み取ったか判断する配列 0=読み取っていない
 for (int i = 0; i < 28; i++) {
 int num;
 cin >> num;
 a[num] = 1;//読み取った数字の箇所を1にする
 } 
 vector<int>v(5);//答えを格納する配列
 int j = 0;
 for (int i = 1; i <= 30; i++) {
  if (a[i] == 0) {
  v[j] = i;
  j++;
  }//もし0だったら答えである
 }
 cout << v[0] << endl;
 cout << v[1] << endl;
 return 0;
}