编程题
### 问题描述 在游戏中防御力一般分成物理防御和魔法防御,现在点满防御的梅普露在每次挑战 Boss 前都会使用技能给自己上 buff 。 假设在一开始时,梅普露的物理防御的数值为 $a$ ,魔法防御的数值为 $b$ 。她有以下两种技能来提升自己的防御力,其中 $k_1,k_2$ 分别为技能 $1$ ,技能 $2$ 的技能等级。 技能 $1$ : $a = k_1 \times a + b$ 。 技能 $2$ : $b = a + k_2 \times b$ 。 在梅普露的备忘录中有一个仅由 $0$ 和 $1$ 组成的字符串 $s$ 。梅普露会按字符串 $s$ 从左到右的顺序释放技能。$0$ 代表释放技能 $1$ ,$1$ 代表释放技能 $2$ 。 现在梅普露会修改 $q$ 次字符串 $s$ 。 如果修改的位置上的字符是 $0$ ,则会把这个位置的字符变成 $1$ 。如果修改的位置上的字符是 $1$ ,则会把这个位置的字符变成 $0$ 。 梅普露想知道每次修改后,在此释放顺序下她的物理防御 $a$ 和魔法防御 $b$ 分别将会是多少。 注意:每次修改将会永久改变释放的技能。 由于梅普露的数值过高,请把结果对 $10^9 + 7$ 取模。 ### 输入格式 第一行五个整数 $n, a, b, k_1, k_2$ 分别表示字符串 $s$ 的长度,梅普露的物理防御,梅普露的魔法防御,技能 $1$ 的等级,技能 $2$ 的等级。 第二行一个仅由 $0$ 和 $1$ 组成的字符串 $s$ ,表示梅普露释放技能的顺序。 第三行一个整数 $q$,表示梅普露修改 $s$ 的次数。 接下来 $q$ 行: 每一行一个整数 $x$ ,表示梅普露要修改 $s$ 的第 $x$ 个位置的字符。 ### 输出格式 对于 $q$ 次询问,每次询问输出一行两个整数,分别表示梅普露释放完所有技能后的物理防御和魔法防御,并把结果对 $10^9 + 7$ 取模。 ### 样例输入 ```text 3 1 2 3 4 101 2 1 2 ``` ### 样例输出 ```text 17 25 5 57 ``` ### 说明 释放任何技能前 $a = 1, b = 2, k1 = 3, k2 = 4$ 。 第一次修改后 $s = 001$ ,每次释放技能后 $a,b$ 分别是: $a=5,b=2\rightarrow a=17,b=2\rightarrow a=17,b=25$ 。 第二次修改后 $s = 011$ ,每次释放技能后 $a,b$ 分别是: $a=5,b=2\rightarrow a=5,b=13\rightarrow a=5,b=57$ 。 ### 评测数据规模 对于 $25$% 的评测数据,$1\leq n, q, a, b, k_1, k_2\leq 10, 1\leq x\leq n$。 对于 $100$% 的评测数据,$1\leq n, q\leq 10^5, 1\leq a,b,k_1,k_2\leq 10^9, 1\leq x\leq n$。
查看答案
赣ICP备20007335号-2