牛牛的三角形
题号:NC300749
时间限制:C/C++/Rust/Pascal 2秒,其他语言4秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

\hspace{15pt}从集合 \{1, 2, \dots, n\} 中等概率地随机选取 m不同的整数,使得在选出的这 m 个数中,存在三个不同的数 a, b, c,满足以 a, b, c 为边长可以构成一个非退化的三角形。
\hspace{15pt}求解上述情况出现的概率。可以证明答案可以表示为一个不可约分数 \tfrac{p}{q},为了避免精度问题,请直接输出整数 \left(p \times q^{-1} \bmod M\right) 作为答案,其中 M = 998\,244\,353q^{-1} 是满足 q\times q^{-1} \equiv 1 \pmod{M} 的整数。更具体地,你需要找到一个整数 x \in [0, M) 满足 x \times qM 取模等于 p

【名词解释】
\hspace{15pt}非退化三角形:三条边长均大于 0 且任意两边之和均大于第三边的三角形。

输入描述:

\hspace{15pt}每个测试文件均包含多组测试数据。第一行输入一个整数 T\left(1\leq T\leq 3 \times 10^5\right) 代表数据组数,每组测试数据描述如下:
\hspace{15pt}第一行输入两个整数 n,m\left(1\leq m\leq n\leq 1.5 \times 10^3\right),表示正整数的范围、随机选出的数的数量。

输出描述:

\hspace{15pt}对于每一组测试数据,新起一行输出一个整数,表示答案。
示例1

输入

复制
2
3 3
4 3

输出

复制
0
748683265

说明

\hspace{15pt}对于第二组测试数据,有以下四种不同的选取方式:
\hspace{23pt}\bullet\,\{1,2,3\},此时三元组 (1,2,3) 无法构成非退化三角形;
\hspace{23pt}\bullet\,\{1,2,4\},此时三元组 (1,2,4) 无法构成非退化三角形;
\hspace{23pt}\bullet\,\{1,3,4\},此时三元组 (1,3,4) 无法构成非退化三角形;
\hspace{23pt}\bullet\,\{2,3,4\},此时三元组 (2,3,4) 可以构成非退化三角形。
\hspace{15pt}因此,概率为 \tfrac{1}{4},我们能够找到,748\,683\,265 \times 4 = 2\,994\,733\,060,对 998\,244\,353 取模后恰好等于分子 1,所以 748\,683\,265 是需要输出的答案。