AT_bitflyer2018_final_e 数式とクエリ
题目描述
现有一个仅由字符 `(`, `)`, `+`, `-`, `*`, `a` 组成的数学表达式 $ S $(具体定义参见下文 BNF 描述)。假设表达式中的字符 `a` 总共有 $ N $ 个。
接下来有 $ Q $ 个查询,每个查询提供 $ N $ 个整数 $ a_1, \ldots, a_N $ 和一对整数 $(b_i, x_i)$。你的任务是处理这些查询。
**处理查询**:对于每个查询,将表达式中从左到右第 $ b_i $ 个 `a` 替换为 $ x_i $,其他位置的 `a` 替换为 $ a_1, \ldots, a_{b_i-1}, a_{b_i+1}, \ldots, a_N $,然后计算替换后表达式的值。最后,输出该值对 $ 10^9+7 $ 取模后的结果,结果应在 $ 0 $ 到 $ 10^9+6 $ 之间。
本题中,表达式 $ S $ 符合以下 BNF 表达式定义:
```
::= | '+' | '-'
::= | '*'
::= 'a' | '(' ')'
```
输入格式
输入包含以下内容:
> $ S $ $ Q $ $ a_1 $ ... $ a_N $ $ b_1 $ $ x_1 $ : $ b_Q $ $ x_Q $
输出格式
输出共 $ Q $ 行,每行对应一个查询的答案。对于第 $ i $ 个查询($ 1 \le i \le Q $),输出结果。
说明/提示
- $ S $ 的长度不超过 $ 200,000 $。
- $ S $ 可被 BNF 表达式定义的规则解析。
- $ 0 \le a_i < 10^9+7 $。
- $ 1 \le Q \le 10^5 $。
- $ 1 \le b_i \le N $。
- $ 0 \le x_i < 10^9+7 $。
- $ x_i $ 为整数。
### 示例解释
比如,在第一个查询中,将第一个 `a` 替换为 $ x_1 = 1 $,第二个 `a` 替换为 $ a_2 = 1 $,第三个 `a` 替换为 $ a_3 = 2 $,表达式 $(1 - (1)) * 2 = 0$ 计算结果是 $ 0 $。在第三个查询中,替换第一个 `a` 为 $ a_1 = 0 $,第二个 `a` 替换为 $ x_3 = 1 $,第三个 `a` 替换为 $ a_3 = 2 $,结果 $(0 - (1)) * 2 = -2$,取模之后得到 $ 10^9+5 $。
**本翻译由 AI 自动生成**