第二周-周测-K小数

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/oytf10001/article/details/88594494

                               K小数


题目描述

这是一道很简单的问题。

给你一个长度为 n

的序列 a1,a2,...,an,求这个序列的第 k 小的数。k 小数的定义为:将 a 从小到大排序后第 k 个位置的值。 由于输入数据量过大,输入只给出a1的值,并采用如下递推式生成剩余数据: ai=(pai−1+q)modM(1<i≤n) 其中,mod 运算的含义是:amodb 的值为 a 除以 b

得到的余数。

输入格式

输入第一行为两个正整数 n,k

,含义见描述。

第二行为四个非负整数 a1,p,q,M

,你需要根据题目中给出式子计算完整序列。

输出格式

输出一行一个正整数,表示第原序列第 k

小的数。

输入样例1

5 4
6 7 5 10

输出样例1

6

样例2

点此下载

数据范围

对于 20% 的数据,n≤102

对于40% 的数据,n≤104

对于 60% 的数据,n≤106

对于100% 的数据,1≤k≤n≤3×107

,输入中其它数都在 int 范围内。

提示

本题没有开启 STL,也就是说你不能使用 std::sort。

[ 但是可以采用类似快排的思想,线性解决本题 ]

为了帮助大家完成题目,我们提供了只包含了输入输出功能的程序模板,也提供了含有算法的大部分实现细节的程序。

你可以根据自己的实际情况,在这些程序的基础上进行作答,或不参考这些程序,这将与你的得分无关。

这些程序可以从【这里】下载。

特别提醒:对于 Java 语言,在提交时请删除程序中的所有中文字符,否则可能无法通过编译。

猜你喜欢

转载自blog.csdn.net/oytf10001/article/details/88594494