codeforces#P2081A. Math Division
Math Division
以下题面由 AI 翻译。
问题描述
Ecrade有一个整数。他将用二进制形式展示这个数字,长度为。
有两种操作:
- 将替换为,其中是小于等于的最大整数。
- 将替换为,其中是最小的整数大于等于。
Ecrade将进行多次操作,直到变为1。每次操作,他独立选择执行第一种操作或第二种操作的概率均为。
Ecrade想知道,使等于1所需的期望操作次数是多少,并对结果取模。然而,这个问题似乎有些困难,因此请帮助他!
输入格式
- 第一行包含一个整数(),表示测试用例的数量。
- 每个测试用例的第一行包含一个整数(),表示的二进制表示长度。
- 每个测试用例的第二行包含一个长度为的二进制字符串,表示的二进制表示。该字符串从最高有效位到最低有效位排列。
- 保证的最高有效位是1。
输出格式
对于每个测试用例,输出使等于1所需的期望操作次数,并对结果取模。
示例
输入:
3
3
110
3
100
10
1101001011
输出:
500000006
2
193359386
说明
对于第一个测试用例,,有六种可能的操作序列:
- $6 \xrightarrow{\text{OPER 1}} 3 \xrightarrow{\text{OPER 1}} 1$,概率为。
- $6 \xrightarrow{\text{OPER 1}} 3 \xrightarrow{\text{OPER 2}} 2 \xrightarrow{\text{OPER 1}} 1$,概率为。
- $6 \xrightarrow{\text{OPER 1}} 3 \xrightarrow{\text{OPER 2}} 2 \xrightarrow{\text{OPER 2}} 1$,概率为。
- $6 \xrightarrow{\text{OPER 2}} 3 \xrightarrow{\text{OPER 1}} 1$,概率为。
- $6 \xrightarrow{\text{OPER 2}} 3 \xrightarrow{\text{OPER 2}} 2 \xrightarrow{\text{OPER 1}} 1$,概率为。
- $6 \xrightarrow{\text{OPER 2}} 3 \xrightarrow{\text{OPER 2}} 2 \xrightarrow{\text{OPER 2}} 1$,概率为。
因此,期望操作次数为:
$$2 \cdot \dfrac{1}{4} + 3 \cdot \dfrac{1}{8} + 3 \cdot \dfrac{1}{8} + 2 \cdot \dfrac{1}{4} + 3 \cdot \dfrac{1}{8} + 3 \cdot \dfrac{1}{8} = \dfrac{5}{2} \equiv 500\,000\,006 \pmod{10^9 + 7} $$