C题Compute's Matrix
原题链接
解题思路
已知左上角坐标(x1,y1)和右下角坐标(x2,y2),构成子矩阵如下:
| (x1,y1) | (x1,y1+1) | (x1,y1+2) | ... | (x1,y2) |
|---|---|---|---|---|
| (x1+1,y1) | (x1+1,y1+1) | (x1+1,y1+2) | ... | (x1+1,y2) |
| (x1+2,y1) | (x1+2,y1+1) | (x1+2,y1+2) | ... | (x1+2,y2) |
| ... | ... | ... | ... | ... |
| (x2,y1) | (x2,y1+1) | (x2,y1+2) | ... | (x2,y2) |
对第x行累加:
即
再累加各行:
得
其中
取余输出即可
AC代码
#include <iostream>
using namespace std;
const long long M = 1e9 + 7;
int main(void)
{
int t;
long long n, a, b, c, d, x, y, r;
cin >> t;
while (t--)
{
cin >> n >> a >> b >> c >> d;
x = (a + c) * (c - a + 1) / 2;
y = (b + d) * (d - b + 1) / 2;
x %= M;
y %= M;
r = x * y;
r %= M;
cout << r << endl;
}
return 0;
}
京公网安备 11010502036488号