P11316 [RMI 2021] 去 M / NoM

题目背景

译自 [9th Romanian Master of Informatics, RMI 2021](https://rmi.lbi.ro/rmi_2021/) D2T1。$\texttt{0.2s,0.5G}$。

题目描述

有 $N$ 个绿色的石子,标号 $1\sim N$。 有 $N$ 个灰色的石子,标号 $1\sim N$。 将 $2N$ 个石子任意排成一列,两个相邻石子的距离为 $1$。定义 $\mathrm{dist}(i)$ 为绿色的上面标有 $i$ 的石子与灰色的上面标有 $i$ 的石子的距离。 给定正整数 $M$。若存在 $1\le i\le N$,使得 $M\mid \mathrm{dist}(i)$,我们就说这样的排列方式是**不好的**(因为可能会导致 IDE 卡死)。否则我们就说这样的排列方式是**好的**。 求出好的排列方案数,对 $(10^9+7)$ 取模。 两种排列方案相同,当且仅当对应石子颜色和编号都相同。

输入格式

一行两个正整数 $N,M$。

输出格式

输出一行一个整数,表示方案数对 $(10^9+7)$ 取模后的结果。

说明/提示

对于 $100\%$ 的数据,保证 $1\le M\le N\le 2\, 000$。 | 子任务编号 | $N,M\le $ |得分 | | :--: | :--: | :--: | | $ 1 $ | $ 5 $ | $9$ | | $ 2 $ | $ 100 $ | $12$ | | $ 3 $ | $ 300 $ | $13$ | | $ 4 $ | $ 900 $ | $18$ | | $ 5 $ | $ 2\, 000$ | $48$ |