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$ |