#P16676. [CSPro 27] 如此编码
[CSPro 27] 如此编码
背景
洛谷的测试数据仅供民间交流使用,非官方测试数据。官方评测链接:https://www.cspro.org/。
某次测验后,顿顿老师在黑板上留下了一串数字 23333 便飘然而去。凝望着这个神秘数字,小 P 同学不禁陷入了沉思……
题目描述
已知某次测验包含 道单项选择题,其中第 题()有 个选项,正确选项为 ,满足 且 。比如说, 表示第 题有 4 个选项,此时正确选项 的取值一定是 0、1、2、3 其中之一。
顿顿老师设计了如下方式对正确答案进行编码,使得仅用一个整数 便可表示 。
首先定义一个辅助数组 ,表示数组 的前缀乘积。当 时,满足:
特别地,定义 。
于是 便可按照如下公式算出:
$$= c_0 \times b_1 + c_1 \times b_2 + \cdots + c_{n-1} \times b_n \tag{2}$$易知,,最小值和最大值分别当 全部为 0 和 时取得。
试帮助小 P 同学,把测验的正确答案 从顿顿老师留下的神秘整数 中恢复出来。
输入格式
从标准输入读入数据。
输入共两行。
第一行包含用空格分隔的两个整数 和 ,分别表示题目数量和顿顿老师的神秘数字。
第二行包含用空格分隔的 个整数 ,依次表示每道选择题的选项数目。
输出格式
输出到标准输出。
输出仅一行,包含用空格分隔的 个整数 ,依次表示每道选择题的正确选项。
15 32767
2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
4 0
2 3 2 5
0 0 0 0
7 23333
3 5 20 10 4 3 10
2 2 15 7 3 1 0
提示
样例 3 解释
:::align{center} | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | | :-: | :-: | :-: | :-: | :-: | :-: | :-: | :-: | | | 3 | 5 | 20 | 10 | 4 | 3 | 10 | | | 2 | 2 | 15 | 7 | 3 | 1 | 0 | | | 1 | 3 | ^ | 300 | 3000 | 12000 | 36000 | :::
子任务
50% 的测试数据满足: 全部等于 2,即每道题均只有两个选项,此时 ;
全部的测试数据满足:, 且 (根据题目描述中的定义 表示全部 的乘积)。
提示
对任意的 ,因为 均为 的倍数,所以 除以 的余数具有如下性质:
其中 表示取余运算。令 取不同的值,则有如下等式:
$$m \% c_2 = c_0 \times b_1 + c_1 \times b_2 \tag{4}$$$$m \% c_3 = c_0 \times b_1 + c_1 \times b_2 + c_2 \times b_3 \tag{5}$$