A92960.「BalticOI 2016 Day1」螺旋
提高+/省选-
官方
通过率:0%
时间限制:1.50s
内存限制:256MB
题目描述
题目译自 BalticOI 2016 Day1 T3「Spiral」
一个矩阵的大小为 (2n+1)×(2n+1),我们们通过下述方法填数:数字 1 在中心,数字 2 在其右,其他数字依次按照逆时针螺旋摆放。
你的任务是对于 q 个询问,计算出一个给定子矩阵所有数字的和对 109+7 取余的结果。比如以下 n=2 的矩阵,灰色区域的数字之和为 74:

输入格式
第一行,两个整数 n 和 q,分别表示矩阵的大小和询问的个数。
接下来 q 行,每行四个整数 x1,y1,x2 和 y2 (−n≤x1≤x2≤n, −n≤y1≤y2≤n)。这表示你需要计算一个对角为 (x1,y1) 和 (x2,y2) 的子矩阵的数字之和。
输出格式
对于每个询问,输出一行表示答案(对 109+7 取余)。
输入输出样例
输入#1
2 3 0 -2 1 1 -1 0 1 0 1 2 1 2
输出#1
74 9 14
说明/提示
对于每个子任务,1≤q≤100。
| 子任务 | 分数 | 数据范围 |
|---|---|---|
| 1 | 12 | 1≤n≤1000 |
| 2 | 15 | 1≤n≤109,x1=x2 and y1=y2 |
| 3 | 17 | 1≤n≤105 |
| 4 | 31 | 1≤n≤109,x1=y1=1 |
| 5 | 25 | 1≤n≤109 |