小娲的孩子们

小娲的孩子们

Description:

老大可爱的儿子有个好听的外号叫小娲。因为老大非常向往子孙满堂的场面,所以逼迫小娲生了n个孩子。为了方便客人过年时给这些孩子们发压岁钱,小娲给了他们每人一个编号(从1到n),这样客人们就可以按编号一个个发红包了。终于到了大年初一,小娲却发现有几个调皮的孩子偷偷把自己的编号改成了其他人的编号,一个客人每个编号只会发一次压岁钱(小娲:“这可不行!”)。为了收到足够的压岁钱,小娲想请你帮她找到有哪些编号不存在。

Input:

第一行一个数字n,表示孩子的个数。(1≤n≤1e5)
第二行n个用空格隔开的数字,第i个数字ai代表第i个孩子现在的编号。(1≤ai≤n)

Output:

第一行一个数字x,表示从1到n中有几个编号没有出现过。
接下来x行,每行一个数字,表示没有出现的编号。(输出编号从小到大排序)

Sample Input:

8
4 3 2 7 8 2 3 1

Sample Output:

2
5
6

Code

#include <bits/stdc++.h>

using namespace std;

const int N = 100010;

int son[N];

int main() {
	int n = 0;
	int m = 0;
	int count = 0;
	cin >> n;
	count = 0;

	for (int i = 1; i <= n; i++) {
		scanf("%d", &m);
		son[m]++;
		if (son[m] > 1) {
			count++;
		}
	}

	cout << count << endl;

	for (int i = 1; i <= n; i++) {
		if (!son[i]) {
			cout << i << endl;
		}
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值