#CSPR02D. [CSP复赛模拟第02套-D题] 音频编码

    ID: 9958 传统题 1000ms 512MiB 尝试: 0 已通过: 0 上传者: 标签>编程题c++CSPCSP复赛CSP模拟练习CSP复赛模拟第02套第02套-D题

[CSP复赛模拟第02套-D题] 音频编码

音频编码

题目描述

小珅最近学习了音频的数字化方法。按顺序依次为 采样、量化、编码• 三个步骤,下面是相关概念的简单解释:

采样:每隔一个固定的时间得到一个当前音频信息,可以认为这个信息是一个浮点数。

量化:音频信息都量一下对应的刻度。

编码:把每个刻度对应到一个数字代码,把所有数字代码从前往后连接就形成了音频的数字信息。

采样频率:单位为赫兹(hz),表示每秒钟的采样次数,每次采样的间隔时间一样。假设采样频率为 aahz,则表示每 1/a1/a秒采集一个音频信息(浮点数)。

量化位数:即采用一个几位的二进制数来描述采样得到的浮点数。假设量化位数为 bb,那么量化结果的二进制整数对应的十进制范围为 02b10 \sim 2^b - 1

假设音频信息(浮点数)的范围固定为 162000016 \sim 20000,那么会把 162000016 \sim 20000中间平均分离出来 2b12^b - 1个分界点,加上 1616一起就构成了 2b2^b个分界点。每个音频信息都找到小于等于它的最大的刻度值作为它的编码值。

一般来说标准的音频文件还会有多声道、以及一些压缩算法来得到更好的效果。但本题不讨论这个。

小珅拿到了一个采样频率为 aa赫兹,持续 tt秒的一共 a×ta \times t个音频信息(浮点数),他想把这些音频信息(浮点数)按照 bb位的量化位数进行量化。

他使用二进制编码,把所有量化的刻度从小到大分别对应于 02b10 \sim 2^b - 1,每个刻度都用一个 bb位二进制数记录,所有固定位数的二进制数从后往前连接得到最终编码结果。

请你输出最终的编码结果。

输入格式

第一行为三个整数 a,t,ba, t, b

接下来 tt行,每行 aa个浮点数,即每秒的音频信息。

输出格式

一行为最终的编码结果。

输入输出样例

输入 #1


5 2 3 16.8 2000 7510 15333 10008 9000.5 15005 19999.99 15003.999 2514.01

输出 #1


000000011110100011110111101001

说明/提示

对于 100%100\%的数据,保证:

1a441001 \le a \le 44100

1t3001 \le t \le 300

1a×t1051 \le a \times t \le 10^5

1b161 \le b \le 16

16-16 \le音频信息 20000 \le 20000