#P6972. 4972. [Lydsy1708月赛]小 Q 的方格纸

4972. [Lydsy1708月赛]小 Q 的方格纸

Description

【题目描述】
方格纸与草稿纸一样,都是算法竞赛中不可或缺的重要工具。身经百战的小 Q 自然也会随身带着方格纸。小 Q 的方格纸有 $n$ 行 $m$ 列,一共 $n\times m$ 个方格,从上到下依次标记为第 $1,2,\cdots,n$ 行,从左到右依次标记为第 $1,2,\cdots,m$ 列,方便起见,小 Q 称第 $i$ 行第 $j$ 列的方格为 $(i,j)$。小 Q 在方格纸中填满了数字,每个格子中都恰好有一个整数 $a_{i,j}$。

小 Q 不喜欢手算,因此每当他不想计算时,他就会让你帮忙计算。小 Q 一共会给出 q 个询问,每次给定一个方格 $(x,y)$ 和一个整数 $k(1\le k\le\min(x,y))$,你需要回答由 $(x,y),(x-k+1,y),(x,y-k+1)$ 三个格子构成的三角形边上以及内部的所有格子的 $a$ 的和。

【输入格式】
第一行包含 $6$ 个正整数 $n,m,q,A,B,C(1\le n,m\le 3000,1\le q\le 3000000,1\le A,B,C\le 1000000)$。

其中 $n,m$ 表示方格纸的尺寸,$q$ 表示询问个数。

为了防止输入数据过大,$a$ 和询问将由以下代码生成:
unsigned int A,B,C;
inline unsigned int rng61(){
	A ^= A << 16;
	A ^= A >> 5;
	A ^= A << 1;
	unsigned int t = A;
	A = B;
	B = C;
	C ^= t ^ A;
	return C;
}
int main(){
	scanf("%d%d%d%u%u%u", &n, &m, &q, &A, &B, &C);
	for(i = 1; i <= n; i++)
		for(j = 1; j <= m; j++)
			a[i][j] = rng61();
	for(i = 1; i <= q; i++){
		x = rng61() % n + 1;
		y = rng61() % m + 1;
		k = rng61() % min(x, y) + 1;
	}
}

【输出格式】
为了防止输出数据过大,设 $f_i$ 表示第 $i$ 个询问的答案,则你需要输出一行一个整数,即:

$$(\sum_{i=1}^q 233^{q-i}\times f_i) \bmod 2^{32}$$

【样例输入】
3 4 5 2 3 7

【样例输出】
3350931807