#2978. [Poi2002]协议

[Poi2002]协议

//时间限制:1s 空间限制:128MB

题目描述

Mr ZHU 在一个通讯公司工作,他承担了公司的网络协议设计任务。目前他致力于通过一条电缆从一台电脑发送数据到另一台电脑。在电缆中有 kk 种不同的电平,而每秒电平有 1n\displaystyle \frac{1}{n} 种变化 (1n\displaystyle \frac{1}{n} 秒这个常数,我们称之为一个脉冲)。数据打包发送时,包含了 mm 个连续的脉冲。(即每 mn\displaystyle \frac{m}{n} 秒发送一个包)。

由于技术原因, 在每个包里的电平并稳定为一个常数, 而是不得不一次次改变。严格地讲,包含连续 ll 个脉冲电平相同的数据包将不能发送。如果某种协议允许发送 xx 个不同的包,那么能对一个包进行 log2x\log_2 x 二进制位的编码。Mr ZHU 想知道在 11 秒内最多能发送多少位信息。

例如,假设电缆允许我门发送 22 种不同的电平的信息(k=2k=2),我们用 0011 表示。如果电平每秒有 2020 次变化(n=20n=20),包含有 44 个脉冲(m=4m=4),在每个包内有 33 个连续的脉冲具有同一种电平(l=3l=3),这时我们不能发送这些包: 0000,0001,1000,1111,1110,01110000, 0001, 1000, 1111, 1110, 0111. 但是可以发送这些包: $0010, 0011, 0100, 0110, 0101, 1101, 1100, 1011, 1001$ 与 10101010。当一个要发送 1010 个不同种类的包,我们对每个包进行 log210\log_2 10 位信息编码。在一秒内可以发送 20/4=520/4 = 5 个包,也就是 5log21016.60965\log_2 10 \approx 16.6096 位信息。

输入格式

有四个整数:电平种类 kk,脉冲的频率 nn,数据包的大小 mm,在一个包中连续脉冲的数目 ll,也就是说在这个范围内必须改变电平。

输出格式

输出一个整数,为一秒内最大能发送数据包的位数,答案四舍五入取整。

样例输入

2 20 4 3

样例输出

16

数据规模与约定

对于 100%100\% 的数据,2k102 \leq k \leq 101n1×1031 \leq n \leq 1\times 10^31m1001 \leq m \leq 1002lm2 \leq l \leq mnm10\displaystyle \frac{n}{m} \leq 10