AT_arc197_e
模拟赛遇到这个题,还以为是 arc 的 a 题呢,怎么是 e。
由于题目条件给定
这样,就相当于在一个
一个想法就是横纵分开。以横轴为例,图中可知
然而,这样会将一些错误答案统计进去。这是因为,我们保证了相邻数字的正方形不会相交,但是相对的两者没有保证。
如图(就别注意大小了,反正差不多一个意思),
因此答案就是
注意特判。
#include <iostream>
#include <atcoder/modint>
using namespace std;
using namespace atcoder;
using mint = modint998244353;
int n, h, w;
mint c2(mint n)
{
return (n * (n - 1) / 2).pow(2);
}
mint c4(mint n)
{
return ((n + 1) * n * (n - 1) * (n - 2) / 24);
}
void solve()
{
cin >> n >> h >> w;
if (h < 2 * n || w < 2 * n)
{
cout << 0 << '\n';
}
else
{
h -= 2 * n - 2;
w -= 2 * n - 2;
cout << (c2(h) * c2(w) - 2 * c4(h) * c4(w)).val() << '\n';
}
}
int main()
{
int t;
cin >> t;
while (t--)
{
solve();
}
return 0;
}