#P8055. B Highbit & lowbit
B Highbit & lowbit
题目描述
定义一个正整数的 为该数在二进制表示下的最高二进制位的位值,如 $\mathrm{highbit}(22_{(10)})=\mathrm{highbit}(10110_{(2)})=10000_{(2)}=16_{(10)}$。
定义一个正整数的 为该数在二进制表示下的最低非零二进制位的位值,如 $\mathrm{lowbit}(22_{(10)})=\mathrm{lowbit}(10110_{(2)})=10_{(2)}=2_{(10)}$。
再定义两种操作:
- 操作 :将一个正整数 变为 。
- 操作 :将一个正整数 变为 。
现给定一个操作序列和 次询问,每次询问包含 个正整数 ,表示将 从左到右依次执行 的操作,请输出 的值,由于答案可能很大,请输出答案对 取模的值。
输入格式
第一行两个正整数 。
接下来一行一个字符串 ,长度为 ,其中仅含有 0
,1
。
若第 个字符为 0
,则表示一个 操作,即 。
若第 个字符为 1
,则表示一个 操作,即 。
之后 行,每行 个正整数 ,表示一次询问。
输出格式
对于每一个询问,输出一行一个数表示答案对 取模的结果。
8 8
01100001
1 2 3
1 4 9
2 6 9
3 8 9
6 8 2
8 8 3
5 8 6
2 8 17
8
36
40
64
16
5
64
144
提示
【数据范围】
本题采用捆绑测试。
对于所有测试点,满足 ,。详细数据范围如下:
- Subtask #1 (12 pts): ,。
- Subtask #2 (23 pts): 。
- Subtask #3 (11 pts): ,字符串中仅含有
1
。 - Subtask #4 (11 pts): ,字符串中仅含有
0
。 - Subtask #5 (6 pts): ,保证每次询问的 均可以表示为 的形式, 为非负整数。
- Subtask #6 (15 pts): ,保证每次询问的 均可以表示为 的形式, 均为非负整数。
- Subtask #7 (10 pts): 。
- Subtask #8 (12 pts): 没有任何附加限制。