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)范围内。