蓝桥杯2022寻找整数
时间: 2023-10-15 20:07:38 浏览: 40
题目描述
小明发现了一个长度为 $n$ 的整数序列 $a_1,a_2,\cdots,a_n$,他突然想找到一个数 $x$,使得 $x$ 恰好在序列中出现了 $k$ 次。
请你编写一个程序,帮助小明找到这个数 $x$。
输入格式
第一行包含两个整数 $n$ 和 $k$。
第二行包含 $n$ 个整数 $a_1,a_2,\cdots,a_n$,表示整数序列。
输出格式
输出一个整数,表示满足条件的数 $x$。
如果不存在满足条件的数,则输出 $-1$。
数据范围
$1\leq n\leq 10^5$,
$1\leq k\leq n$,
$1\leq a_i\leq 10^9$
输入样例 #1
5 2
1 2 3 2 4
输出样例 #1
2
输入样例 #2
5 1
1 2 3 2 4
输出样例 #2
-1
算法1
(哈希表) $O(n)$
首先可以考虑用哈希表存储每个数的出现次数,然后再遍历哈希表找到出现次数为 $k$ 的数。
时间复杂度
遍历数组需要 $O(n)$ 的时间,哈希表查找需要 $O(1)$ 的时间,因此总时间复杂度为 $O(n)$。
C++ 代码
相关问题
给定 t 个正整数 ai,分别问每个 ai 能否表示为蓝桥杯2022年第十三届省赛真题数的
给定 t 个正整数 ai,要判断每个 ai 能否表示为蓝桥杯2022年第十三届省赛真题数的,我们需要找到蓝桥杯2022年第十三届省赛真题数的规律。
根据题目要求,蓝桥杯2022年第十三届省赛真题数的范围是从1到30的正整数,我们可以将这些真题数列出来:
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30
观察这个数列,我们发现其中有一些数字的因数也在其中,比如2、3、4、5、6、7、8、9、10、11、12、13、14等等。
因此,我们可以得出结论:蓝桥杯2022年第十三届省赛真题数可以被其中的某一个真题数整除。
那么对于每一个给定的正整数 ai,我们只需要从蓝桥杯2022年第十三届省赛真题数中依次判断是否能整除 ai 即可。如果找到一个真题数,使得 ai 能被其整除,那么 ai 能表示为蓝桥杯2022年第十三届省赛真题数的,否则不能。
以上就是判断每个 ai 能否表示为蓝桥杯2022年第十三届省赛真题数的方法。注意,我们需要注意数的范围和边界条件,并在代码实现中考虑到这些情况。
[蓝桥杯 2022 国 b] 最大数字
题目要求找出一个整数 n,使得 n 的每一位数字都不小于其右边的任何一位数字,并且 n 是满足这个条件的数字中最大的一个。
解法1:从最高位开始,逐位确定每个数字的值。遍历数字 n,如果 n 的某一位数字小于其右边的数字,将该位数字减1,并将该位右边的所有数字都设置为 9。最后得到的就是满足条件的最大数字。
解法2:从最低位开始,逐位确定每个数字的值。初始化最大数字为 0,从最低位开始遍历,依次设置每个数字的值。对于第 i 位数字,要找到最大的满足条件的数字,只需要将该位数字从 0 至 9 中选取一个,使得选取的数字大于等于已经确定的最大数字的第 i 位数字。这样可以保证满足条件,并且得到最大的数字。
举例说明解法2:假设要找到一个满足条件的最大数字,位数为 5,计算过程如下:
- 第 1 位数字可以选取的范围是 1-9,选取 9,确定第 1 位数字为 9。
- 第 2 位数字可以选取的范围是已确定的最大数字的第 2 位数字至 9,选取 9,确定第 2 位数字为 9。
- 第 3 位数字可以选取的范围是已确定的最大数字的第 3 位数字至 9,选取 9,确定第 3 位数字为 9。
- 第 4 位数字可以选取的范围是已确定的最大数字的第 4 位数字至 9,选取 9,确定第 4 位数字为 9。
- 第 5 位数字可以选取的范围是已确定的最大数字的第 5 位数字至 9,选取 9,确定第 5 位数字为 9。
最终得到的满足条件的最大数字为 99999。