CF2081A.Math Division
普及+/提高
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
Ecrade 有一个整数 x。他将以长度为 n 的二进制数的形式向你展示这个数。
存在两种操作:
- 将 x 替换为 ⌊2x⌋,其中 ⌊2x⌋ 是小于等于 2x 的最大整数。
- 将 x 替换为 ⌈2x⌉,其中 ⌈2x⌉ 是大于等于 2x 的最小整数。
Ecrade 将执行若干次操作直到 x 变为 1。每次操作时,他会独立地以 21 的概率选择执行第一种操作或第二种操作。
Ecrade 想知道他将执行的操作次数的期望值(模 109+7)。由于问题有一定难度,请你帮助他!
输入格式
第一行输入一个整数 t(1≤t≤105)——测试用例数量。接下来描述每个测试用例。
每个测试用例的第一行包含一个整数 n(1≤n≤105)——x 的二进制表示长度。
每个测试用例的第二行包含一个长度为 n 的二进制字符串:表示 x 的二进制形式,从最高有效位到最低有效位给出。保证 x 的最高有效位为 1。
保证所有测试用例的 n 总和不超过 105。
输出格式
对于每个测试用例,输出一个整数表示 Ecrade 将执行的操作次数的期望值(模 109+7)。
形式化地,令 M=109+7。可以证明精确答案可以表示为不可约分数 qp,其中 p 和 q 为整数且 q≡0(modM)。请输出 p⋅q−1modM。换句话说,输出满足 0≤x<M 且 x⋅q≡p(modM) 的整数 x。
输入输出样例
输入#1
3 3 110 3 100 10 1101001011
输出#1
500000006 2 193359386
说明/提示
为简化描述,我们将第一种操作称为 OPER 1,第二种操作称为 OPER 2。
第一个测试用例中,x=6,存在六种可能的操作序列:
- 6OPER 13OPER 11,概率为 41。
- 6OPER 13OPER 22OPER 11,概率为 81。
- 6OPER 13OPER 22OPER 21,概率为 81。
- 6OPER 23OPER 11,概率为 41。
- 6OPER 23OPER 22OPER 11,概率为 81。
- 6OPER 23OPER 22OPER 21,概率为 81。
因此,操作次数的期望为 2⋅41+3⋅81+3⋅81+2⋅41+3⋅81+3⋅81=25≡500000006(mod109+7)。
翻译由 DeepSeek R1 完成
输入解题思路,AI测评打分。不知道怎么写?