#bitflyer2018finale. [bitflyer2018_final_e]数式とクエリ
[bitflyer2018_final_e]数式とクエリ
问题描述
给定只包含 (
, )
, +
, -
, *
, a
的数学表达式 (请参考问题描述中的详细说明)。定义 为 中出现的 a
的个数。
给定 个整数 和 个由两个整数 组成的查询,请处理这些查询。
查询:将给定数学表达式中从左到右的第 个 a
替换为 ,将从左到右的第 个 a
分别替换为 ,并输出替换后的数学表达式的值与 取模后的结果,该结果为大于等于 且小于等于 的整数。
给定的数学表达式 符合以下 BNF 表示法的 <expr>
符号:
<expr> ::= <term> | <expr> '+' <term> | <expr> '-' <term>
<term> ::= <value> | <term> '*' <value>
<value> ::= 'a' | '(' <expr> ')'
约束条件
令 为给定的数学表达式中 a
的个数。
- 的长度不超过
- 可表示为问题描述中的 BNF 表示法的
<expr>
符号 - 为整数
输入
输入以以下形式从标准输入中给出:
... :
输出
输出共 行。第 行()输出第 个查询的答案。
示例输入 1
(a-(a))*a
4
0 1 2
1 1
1 2
2 1
1 4
示例输出 1
0
2
1000000005
6
例如,在第一个查询中,将从左到右的第 个 a
替换为 ,将从左到右的第 个 a
替换为 ,将从左到右的第 个 a
替换为 ,计算结果为 ,因此答案为 。
在第三个查询中,将从左到右的第 个 a
替换为 ,将从左到右的第 个 a
替换为 ,将从左到右的第 个 a
替换为 ,计算结果为 ,在模 的情况下, 同余于 到 之间的整数 ,因此答案为 。
示例输入 2
(a)*a+((a+(a*(a))-(a)*a+a*a))*a
10
8 6 6 4 8 1 4 3 8 9
3 4
3 9
8 4
3 7
4 0
8 9
3 6
9 0
6 8
9 4
示例输出 2
552
597
642
579
282
1002
570
354
318
462