#P12905. [AGC005D] ~K Perm Counting

    ID: 12089 传统题 1000ms 256MiB 尝试: 3 已通过: 1 难度: 7 上传者: 标签>CF2300组合数学计数DP动态规划二分图

[AGC005D] ~K Perm Counting

题目描述

Snuke 非常喜欢排列,所以他决定创建一个长度为 NN 的排列。

但是 Snuke 不喜欢整数 KK,因此他决定创建一个满足以下条件的排列:

  • 设排列为 a1,a2,...,aNa_1, a_2, ..., a_N。对于所有的 i=1,2,...,Ni = 1,2,...,N,满足 aiiK|a_i - i| \neq K

长度为 NN 的排列共有 N!N! 种,其中满足条件的有多少种?由于答案可能非常大,请将答案对素数 924844033924844033 取模后输出。

输入格式

输入通过标准输入给出,格式如下:

NN KK

输出格式

输出一行,包含答案对 924844033924844033 取模后的结果。

输入输出样例 #1

输入 #1

3 1

输出 #1

2

输入输出样例 #2

输入 #2

4 1

输出 #2

5

输入输出样例 #3

输入 #3

4 2

输出 #3

9

输入输出样例 #4

输入 #4

4 3

输出 #4

14

输入输出样例 #5

输入 #5

425 48

输出 #5

756765083

说明/提示

约束条件

  • 2N20002 \leq N \leq 2000
  • 1KN11 \leq K \leq N-1

样例解释 #1

(1,2,3)(1, 2, 3)(3,2,1)(3, 2, 1) 共2种排列满足条件。

样例解释 #2

(1,2,3,4)(1, 2, 3, 4)(1,4,3,2)(1, 4, 3, 2)(3,2,1,4)(3, 2, 1, 4)(3,4,1,2)(3, 4, 1, 2)(4,2,3,1)(4, 2, 3, 1) 共5种排列满足条件。