编程题
### 问题描述 给定一个长度为 $n$ 的序列 $(a[1],a[2],……,a[n])$ 还有 $m$ 次操作: $1, l, r$:询问区间 $[l,r]$ 的元素和。 $2, l, r, x$:将区间 $[l,r]$ 内的元素都加上 $x$。 $3, M, x$:将序列所有下标 $k(1\le k\le n)$ 满足 $k\%M==0$(即 $k$ 是 $M$ 的倍数)的元素 $a[k]$ 加上 $x$。 ### 输入格式 第一行两个整数 $n,m$。 接下来 $n$ 个数表示初始序列。 接下来 $m$ 行每行第一个数为操作方法 $opt$。 若 opt=1,后面跟着两个整数 $l,r$。 若 opt=2,后面跟着三个整数 $l,r,x$。 若 opt=3,后面跟着两个整数 $M,x$。 ### 输出格式 对于每一个操作 $1$,输出一行表示答案。 ### 输入样例 ```c++ 5 4 1 2 3 4 5 1 1 5 2 2 4 1 3 2 2 1 1 5 ``` ### 输出样例 ```c++ 15 22 ``` ### 评测数据规模 对于 $100\%$ 的数据 $1\le n\le 10^5,1\le m\le 2\times 10^5,1\le a[i]\le 10^8,1\le l,r,M\le n,1\le x\le 10^5$。
查看答案
赣ICP备20007335号-2