考虑计算分数不超过 $m$ 的排列的数量,则要求 $a_i\le \frac{m}{i}$。令 $b_i=\min\left\{N,\left\lfloor\frac{m}{N+1-i}\right\rfloor\right\}$,则答案等于 $\prod_{i=1}^N (b_i-i+1)$。
令上述的数量为 $f(m)$,则答案等于 $N!\cdot N^2-\sum_{m=0}^{N^2-1}f(m)$。在 $m$ 增加的过程中,$b_i$ 只有 $N^2$ 次变化,每次变化后 $O(1)$ 维护乘积即可做到 $O(N^2)$ 时间。一种实现方式是记录每个 $b_i$ 下一次变化的时间,因为间隔不超过 $N$,只需要用一个长度为 $N$ 的数组记录即可,这样空间是 $O(N)$ 的。