编程题
### 题目大意 给定一个长度为 $n$ 只包含 $0$ 和 $1$ 字符的二进制数组 $a$,但是不幸的是,你不小心遗忘了蓝桥云课上学习过的排序算法。于是你决定按顺序执行以下操作直到 $a$ 是有序的。 + 在所有满足 $1\leq i < j \leq n$ 的下标对 $(i,j)$ 中等概率选择一对下标 $i$ 和 $j$。 + 如果 $a_i > a_j$,则交换 $a_i$ 和 $a_j$。 问题是数组排好序之前,你想知道以上操作的执行次数的期望是多少? 可以证明答案可以表示为不可约分数 $\frac{p}{q}$ , $p$ 和 $q$ 是两个整数并且 $q\not\equiv 0(\bmod 998244353)$。输出等于答案 $p \cdot q ^{-1} \bmod 998 244 353$ 的整数的值。换句话说,输出一个整数 $x$,满足 $0\leq x < 998244353$ 并且 $x \cdot q \equiv p(\bmod 998244353)$。 ### 输入格式 每个测试都包含多个测试用例。 第一行包含测试用例数量 $T$。 每个测试用例的第一行包含一个整数 $n$,表示二进制数组中的元素数量。 每个测试用例的第二行包含 $n$ 个整数 $a_1,a_2,...,a_n$。 ### 输出格式 对于每个测试用例,打印一个整数,也就是 $p\cdot q^{−1} \bmod 998244353 $ 的值。 ### 样例输入 ```txt 3 3 0 1 0 5 0 0 1 1 1 6 1 1 1 0 0 1 ``` ### 样例输出 ```txt 3 0 249561107 ``` ### 评测数据规模 对于 $100$% 的评测数据,$1\leq T \leq 20,1 \leq N \leq 100000, a_i \in \left\{ 0, 1 \right\}$。
查看答案
赣ICP备20007335号-2