CF266E More Queries to Array...

题目描述

你有一个包含 $n$ 个整数的数组:$a_{1},a_{2},...,a_{n}$。你的任务是高效地进行两种类型的操作: 1. 将区间 $[l,r]$ 内所有元素赋值为 $x$。执行该操作后,数组 $a_{l},a_{l+1},...,a_{r}$ 的所有值都变为 $x$。 2. 计算并输出 $\sum_{i=l}^{r} a_i\times(i-l+1)^k$,其中 $k$ 不超过 $5$。由于该和的值可能很大,你需要输出答案对 $1000000007$(即 $10^{9}+7$)取模的结果。

输入格式

第一行包含两个整数 $n$ 和 $m$($1 \leq n,m \leq 10^{5}$),分别表示数组的长度和操作的数量。第二行包含 $n$ 个整数 $a_{1},a_{2},...,a_{n}$($0 \leq a_i \leq 10^{9}$),表示数组的初始值。 接下来有 $m$ 行,每行描述一个操作: 1. 赋值操作格式为:`= l r x`,表示将 $[l,r]$ 区间内所有元素赋值为 $x$($1 \leq l \leq r \leq n$;$0 \leq x \leq 10^{9}$)。 2. 求和操作格式为:`? l r k`,表示计算 $\sum_{i=l}^{r} a_i\times(i-l+1)^k$($1 \leq l \leq r \leq n$;$0 \leq k \leq 5$)。 输入中所有数字均为整数。

输出格式

对于每个求和操作,输出一行一个整数,表示所求的和对 $1000000007$($10^9+7$)取模的结果。

说明/提示

由 ChatGPT 5 翻译