CFCF2159E.Super-Short-Polynomial-San

NOI/NOI+/CTSC

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

这个问题在一些国家可能非常有名,但如果没有人出这样的问题,其他国家的人又如何了解它们呢?

—— XXI Open Cup, Grand Prix of Tokyo

你将获得三个整数 a, b, ca,\ b,\ c

定义 F(n)F(n) 为次数为 2n2n 的如下多项式:

F(n)=(ax2+bx+c)nF(n) = (a x^2 + b x + c)^n

你需要处理 qq 次如下类型的询问:

  • n  kn\;k :请你计算 i=0k[xi]F(n)\displaystyle \sum_{i=0}^{k} [x^i] F(n) 的值,结果对 109+710^9+7 取模 ^{\ast}

但如果题目就这样结束,可能对你来说太简单了。于是有了一个小小的变数^\dagger:你需要在线地处理这些询问。

^{\ast} 其中 [xa]F(n)[x^a]F(n) 表示 F(n)F(n)xax^a 项的系数。

^\dagger 希望加上这个变数后对你来说不会太难。连小孩子都知道怎么做,只不过你要再把这个方法快上 80000008\,000\,000 倍。

输入格式

第一行包含三个整数 aabbcc,满足 1a,b,c109+61 \le a, b, c \le 10^9+6

第二行包含一个整数 qq,表示询问次数,1q3×1051 \le q \le 3 \times 10^5

接下来 qq 行,每行两个整数 nin_i'kik_i',表示第 ii 次询问的加密参数。

你需要按以下方式解密参数:

  • 令第 ii 次询问(答案对 109+710^9+7 取模)的答案为 ansians_i,其中 ans0=0ans_0=0
  • ii 次询问的 nnkkni=niansi1n_i = n_i' \oplus ans_{i-1}ki=kiansi1k_i = k_i' \oplus ans_{i-1},其中 0ni3×1050 \le n_i \le 3\times 10^50ki2ni0 \le k_i \le 2n_i

注意全部 nin_i 之和与 kik_i 之和均无上界。

输出格式

对于每个询问,输出一个整数,表示答案对 109+710^9+7 取模的结果,每个答案占一行。

输入输出样例

  • 输入#1

    3 2 1
    11
    0 0
    0 1
    0 0
    2 1
    4 6
    3 0
    7 7
    13 12
    25 31
    31379 9237
    396176013 396306657

    输出#1

    1
    1
    3
    6
    1
    5
    15
    27
    36
    396240845
    819003547

说明/提示

解密后的样例输入如下:

3 2 1
11
0 0
1 0
1 1
1 2
2 0
2 1
2 2
2 3
2 4
31415 9265
200000 69420

在 OEIS 上,该多项式 F(n)F(n) 可参见 A084608。不过不用去点那个链接,没什么特别有用的信息。相信我。

首页