2 QUICKSORT KILLER(QKILLER.C/CPP/PAS) 5
1. F(l, r) = (l + r) / 2
2. F(l, r) = l
3. F(l, r) = r
4. F(l, r) = random(l, r)
上述除法为整数除法,random(l, r) 函数返回 [l, r] 间的伪随机数。随机函数的工
作原理如下:
在程序开始时,自动初始化随机数种子 x
0
= time(NULL),time(NULL) 函数同
C/C++ 中同名函数,即返回从UTC 1970/01/01 00:00:00 开始到调用时经过的秒数。
(不必考虑闰秒等问题)
random(l, r) 函数第 i 次调用时 x
i
= x
i−1
∗ 48, 271 mod 2, 147, 483, 647(即
minstd_rand),返回值为 x
i
mod (r − l + 1) + l。
2.2 输入格式 (qkiller.in)
第一行一个整数 type(type ∈ [1, 4]),表示 F 函数的实现。
如果 type = 4,接下来一行一个时间,格式为yyyy/mm/dd hh:mm:ss,表示调用时
间,范围从 UTC 1970/1/1 00:00:00 到 2020/12/31 23:59:59。
接下来一行 N 个整数,在 32 位有符号整数范围内。
2.3 输出格式 (qkiller.out)
输出 N 个符合要求的整数。
2.4 数据范围
测试点 type 整数范围
1
=1
[−2
31
, 2
31
)
2 [−10
8
, 10
8
]
3
=2
[−2
31
, 2
31
)
4 [−1, 000, 1, 000]
5
=3
[−2
31
, 2
31
)
6 [−1, 000, 1, 000]
7
=4
[−2
31
, 2
31
)
8
[−10
8
, 10
8
]9
10
对于 100% 的数据,整数都在对应的范围内等概率随机 生成。