记模数 $P = 10^9 + 7$。注意到若当前值 $x \geq P$ 并且下一个 $b_i \neq 1$,那么总是选择 $\times b_i$;若当前值 $x < P$ 并且下一个 $b_i = 1$,那么选择 $+a_i$ 一定不劣。按照如下流程执行:
- 若 $x = 0$ 那么找到下一个 $a_i > 0$ 的位置并操作。
- 此时 $x > 0$,每次遇到 $b_i > 1$ 都至少翻倍,暴力地不断找到下一个 $b_i > 1$ 的位置并操作,中间 $+a_i$ 的贡献可以通过前缀和计算,不断重复直到当前值 $\geq P$ 为止。
- 剩下所有操作均按照 $b_i = 1$ 时 $+a_i$ 否则 $\times b_i$ 的规则处理,只需要预处理这个函数的前缀复合即可快速计算。
所有找到下一个符合条件的位置均可以预处理。总时间复杂度为 $\mathcal{O}(n + q \log P)$。