T164719 【常州暑期集训8.8】序列(sequence)
题目描述
$Geobiyye$ 是一个喜欢数据结构的女孩子。
$Geobiyye$ 给了你一个长度为 $n$ 的序列 $a_i$,序列中每个元素的初始值为 0 。
接下来她会对这个序列进行 $m$ 次操作,每次操作有 4 个参数 $l,r,s,e$,表示将区间 $[l,r]$ 加上一个首项为 $s$
,末项为 $e$ 的等差数列。
若一次操作中 $l =1,r = 5,s = 2,e =10$ ,则对序列中第 1~5 个数分别加上 $2,4,6,8,10$。
现在 $Geobiyye$ 要求你求出 $m$ 次操作后序列中的每个数的值。
输入格式
第一行 $2$ 个整数 $n,m$,表示序列长度和操作数。
接下来 $m$ 行,每行 $4$ 个整数 $l,r,s,e$ ,含义见题目描述。
数据保证等差数列中的每一项都是整数。
输出格式
由于输出数据过大,$Geobiyye$ 只想要知道最终序列每一项的异或和,即$a_1 \otimes a_2 \otimes ... \otimes a_n$。(其中 $\otimes$ 表示二进制下的异或操作,在 c++中为 $^$)
说明/提示
## 样例说明
第一次操作加的数列:2 4 6 8 10
第二次操作加的数列:0 1 1 1 0
所有操作结束后序列每个元素值为:2 5 7 9 10。
输出异或和,就是 3。
## 数据范围
对于30%的数据:$n,m \leq 1000$
对于50%的数据:$n,m \leq 10^5$
对于另外20%的数据:$s=e$
对于100%的数据:$n,m\leq 5*10^5,1\leq l\leq r\leq n$
数据保证输入数据以及在任何时候序列中的数在$[0,9*10^{18}]$(也就是ULL)范围内。