学习C++从娃娃抓起!记录下在学而思小猴编程学习过程中的题目,记录每一个瞬间。侵权即删,谢谢支持!
附上汇总贴:小猴编程C++ | 汇总-CSDN博客
【题目描述】
给定一个长度为 n 的数列 A=a1,a2,…,an,你需要找一个非负整数 x,x 需要满足如下条件:
- x 不在数列 A 中;
- x 和整数 k 的差的绝对值最小,其中 k 是一个已知的参数;
- 如果 x 的值有多种,选择最小的 x。
现在给定 n,k 和数列 A,请你找出满足要求的 x。
【输入】
第一行,包含两个整数 n,k。
第二行,包含 n 个整数 a1,a2,…,an。
【输出】
一行一个整数,表示答案。
【输入样例】
5 6
4 7 10 6 5
【输出样例】
8
【代码详解】
#include <bits/stdc++.h>
using namespace std;
int n,k;
bool flag[1000005];
int main()
{
cin >> n >> k;
for (int i=1; i<=n; i++) {
int tmp;
cin >> tmp;
flag[tmp] = 1;
}
int l = k, r = k;
while (true) {
if (l>=0 && flag[l]==0) { // l>=0要放前面,否则会有3个测试点超时
cout << l << endl;
return 0;
}
if (flag[r]==0) {
cout << r << endl;
return 0;
}
l--;
r++;
}
return 0;
}
【运行结果】
5 6
4 7 10 6 5
8