1. 问题描述:
给定一个长度为 n − 1 的数列 a1,a2,…,an−1,数列中的元素两两不同,且都在 1∼n 的范围内,请你计算 1∼n 中的哪一个数没有在数列中出现过。
输入格式
第一行包含一个整数 n,第二行包含 n − 1 个整数 a1,a2,…,an−1
输出格式
输出 1∼n 中没有在数列中出现过的数
数据范围
前三个测试点满足 2 ≤ n ≤ 10;
所有测试点满足 2 ≤ n ≤ 10 ^ 5,1 ≤ ai ≤ n
输入样例:
10
3 8 10 1 7 9 6 5 2
输出样例:
4
来源:https://www.acwing.com/problem/content/4419/
2. 思路分析:
分析题目可以知道 n - 1 个元素两两不同而且都是在 1~n 范围之内,所以没出现过的数字也一定是 1~n 范围内的数字,我们可以枚举所有的数字计算 a 中所有元素之和 s,(1 + n) * n / 2 - s 就是答案。
3. 代码如下:
if __name__ == '__main__':
n = int(input())
# a为n-1个元素
a = list(map(int, input().split()))
s = 0
for x in a:
s += x
print((1 + n) * n // 2 - s)