题目背景
琪露诺是一个喜欢研究数表的女孩子。
题目描述
琪露诺有 n 个正整数 a1,a2,...,an,她会按照如下方式构造一个大小为 n×n 的数字表格:
-
定义数表的左下角为 (1,1),右上角为 (n,n),从左向右数第 x 列,从下向上数第 y 行的位置为 (x,y)。在数表的每个位置填入数字 0,然后在每个 (i,i)(1≤i≤n) 处填入 ai
-
枚举数表中的每一个 2×2 大小的子矩阵,当子矩阵左下角和右上角的数字都不为 0 时,记该子矩阵中从左到右,从上到下的数字分别为 a,b,c,d,进行以下操作:
- 若 a=0,d=0,则在数表中 a,d 所处的位置填入 b+c
- 若 a=0,d=0,则在数表中 a 所处的位置填入 b+c−d
- 若 a=0,d=0,则在数表中 d 所处的位置填入 b+c−a
-
重复第二步操作直至数表中的每一个位置都填有正整数 。
-
最后,将数表中的每个数 aij 变为 ⌊kaij⌋,其中 k 是一给定常数,⌊x⌋ 表示不超过 x 的最大整数。
构造完 n×n 的巨大数表后,琪露诺会进行 q 次查询,每次询问数表中以 (x1,y1) 为左下角,(x2,y2) 为右上角的子矩阵中所有数字的和。
头脑简单的琪露诺想了一天又一天,却始终没有头绪,因此她找到了聪明的你帮她解决这个问题。
当然,由于答案可能很大,你只需要输出答案对 998244353 取模后的结果即可。
输入格式
第一行三个整数 n,q,k。
第二行 n 个正整数,表示 ai。
之后 q 行,每行四个正整数 x1,y1,x2,y2,表示询问子矩阵的左下角和右上角坐标。
输出格式
共 q 行,每行一个整数,表示每一个询问的答案对 998244353 取模后的结果。
提示
样例 1 解释
第一步操作后的数表:
001020300
进行一次第二步操作后的数表:
031523350
进行两次第二步操作后的数表:
631523356
进行第三步操作(对 k=2 向下取整)后的数表:
310211123
询问 1 2 2 3
的答案为 1+1+3+2=7
询问 1 1 3 3
的答案为 0+1+3+1+1+2+3+2+1=14
数据范围:
对于 100% 的数据,1≤n,q≤2×105 ,0<ai,k≤109 ,1≤x1≤x2≤n,1≤y1≤y2≤n。
子任务编号 |
max(n,q) |
特殊限制 |
分值 |
1 |
100 |
无特殊限制 |
5 |
2 |
500 |
3 |
5000 |
10 |
4 |
105 |
q=1 且询问子矩阵为整个数表 |
20 |
5 |
k=1 |
15 |
6 |
k=2 |
7 |
2∗105 |
无特殊限制 |
30 |
注意:本题采取捆绑测试