#573. 如此编码
如此编码
问题描述
某次测验后,顿顿老师在黑板上留下了一串数字 23333 便飘然而去。凝望着这个神秘数字,小 P 同学不禁陷入了沉思……
已知某次测验包含 道单项选择题,其中第 题()有 个选项,正确选项为 ,满足 且 。比如说, 表示第 题有 个选项,此时正确选项 的取值一定是 其中之一。
顿顿老师设计了如下方式对正确答案进行编码,使得仅用一个整数 便可表示 。
首先定义一个辅助数组 ,表示数组 的前缀乘积。当 时,满足:
特别地,定义 。
于是 便可按照如下公式算出:
$$m=\sum_{i=1}^{n} c_{i-1}\times b_i = c_0 b_1 + c_1 b_2 + \cdots + c_{n-1} b_n. $$易知,,最小值和最大值分别当 全部为 和 时取得。
试帮助小 P 同学,把测验的正确答案 从顿顿老师留下的神秘整数 中恢复出来。
输入格式
输入共两行。
第一行包含用空格分隔的两个整数 和 ,分别表示题目数量和顿顿老师的神秘数字。
第二行包含用空格分隔的 个整数 ,依次表示每道选择题的选项数目。
输出格式
输出仅一行,包含用空格分隔的 个整数 ,依次表示每道选择题的正确选项。
输入样例 1
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 1
输入样例 2
4 0
2 3 2 5
输出样例 2
0 0 0 0
输入样例 3
7 23333
3 5 20 10 4 3 10
输出样例 3
2 2 15 7 3 1 0
说明
样例 3 解释

提示
对任意的 ,因为 均为 的倍数,所以 除以 的余数具有如下性质:
其中 表示取余运算。令 取不同的值,则有如下等式:
$$m \bmod c_1,\quad m \bmod c_2,\quad m \bmod c_3,\ \dots $$分别等于
$$c_0 b_1,\quad c_0 b_1 + c_1 b_2,\quad c_0 b_1 + c_1 b_2 + c_2 b_3,\ \dots $$数据范围
的测试数据满足: 全部等于 ,即每道题均只有两个选项,此时 ;
全部的测试数据满足:, 且 (根据题目描述中的定义 表示全部 的乘积)。