A92023.「SHOI2017」相逢是问候

省选/NOI-

通过率:0%

时间限制:2.00s

内存限制:512MB

题目描述

Informatik verbindet dich und mich.
信息将你我连结。

B 君希望以维护一个长度为 nn 的数组,这个数组的下标为从 11nn 的正整数。

一共有 mm 个操作,可以分为两种:

  • 0 l r0 \ l \ r:表示将第 ll 个到第 rr 个数 (al,al+1,,ar)(a_l, a_{l+1}, \dots, a_r) 中的每一个数 aia_i 替换为 caic^{a_i},即 ccaia_i 次方,其中 cc 是输入的一个常数,也就是执行赋值

    aicaia_i \leftarrow c^{a_i}

  • 1 l r1 \ l \ r:求第 ll 个到第 rr 个数的和,也就是输出:

    i=lrai\sum_{i = l}^r a_i

因为这个结果可能会很大,所以你只需要输出结果 modp\mathrel{\mathrm{mod}} p 的值即可。

输入格式

第一行有四个整数 n,m,p,cn, m, p, c,所有整数含义见问题描述。
接下来一行 nn 个整数,表示 aa 数组的初始值。
接下来 mm 行,每行三个整数,其中第一个整数表示了操作的类型。

  • 如果是 00 的话,表示这是一个修改操作,操作的参数为 l,rl, r
  • 如果是 11 的话,表示这是一个询问操作,操作的参数为 l,rl, r

输出格式

对于每个询问操作,输出一行,包括一个整数表示答案 modp\mathrel{\mathrm{mod}} p 的值。

输入输出样例

  • 输入#1

    4 4 7 2
    1 2 3 4
    0 1 4
    1 2 4
    0 1 4
    1 1 3

    输出#1

    0
    3
  • 输入#2

    1 40 19910626 2
    0
    0 1 1
    1 1 1
    0 1 1
    1 1 1
    0 1 1
    1 1 1
    0 1 1
    1 1 1
    0 1 1
    1 1 1
    0 1 1
    1 1 1
    0 1 1
    1 1 1
    0 1 1
    1 1 1
    0 1 1
    1 1 1
    0 1 1
    1 1 1
    0 1 1
    1 1 1
    0 1 1
    1 1 1
    0 1 1
    1 1 1
    0 1 1
    1 1 1
    0 1 1
    1 1 1
    0 1 1
    1 1 1
    0 1 1
    1 1 1
    0 1 1
    1 1 1
    0 1 1
    1 1 1
    0 1 1
    1 1 1

    输出#2

    1
    2
    4
    16
    65536
    11418102
    18325590
    13700558
    13700558
    13700558
    13700558
    13700558
    13700558
    13700558
    13700558
    13700558
    13700558
    13700558
    13700558
    13700558

说明/提示

对于 0%0\% 的测试点,和样例一模一样;
对于另外 10%10\% 的测试点,没有修改;
对于另外 20%20\% 的测试点,每次修改操作只会修改一个位置(也就是 l=rl = r),并且每个位置至多被修改一次;
对于另外 10%10\% 的测试点,p=2p = 2
对于另外 10%10\% 的测试点,p=3p = 3
对于另外 10%10\% 的测试点,p=4p = 4
对于另外 20%20\% 的测试点,n100n \le 100m100m \le 100
对于 100%100\% 的测试点,1n500001 \le n \le 500001m500001 \le m \le 500001p1000000001 \le p \le 1000000001c<p1 \le c < p0ai<p0 \le a_i < p

首页