atcoder#AGC005D. [AGC005D] ~K Perm Counting

[AGC005D] ~K Perm Counting

题目描述

すぬけ君は順列が大好きなので、長さ N N の順列を作ることにしました。

ただしすぬけ君は整数 K K が嫌いなので、以下の条件を満たす順列を作ることにしました。

  • 順列を a1, a2, ..., aN a_1,\ a_2,\ ...,\ a_N とする。全ての i = 1,2,...,N i\ =\ 1,2,...,N について、ai  i  K |a_i\ -\ i|\ \neq\ K を満たす

長さ N N の順列は N! N! 通りありますが、そのうち条件をみたすものは何個あるかを求めてください。

ただし答えは非常に大きくなることがあるので、答えを 924844033 924844033 (素数) で割ったあまりを求めてください。

输入格式

入力は以下の形式で標準入力から与えられる。

N N K K

输出格式

1 1 行に答えを 924844033 924844033 で割ったあまりを出力する。

题目大意

如果一个排列 PP 满足对于所有的 ii 都有 Piik|P_i-i|\neq k,则称排列 PP 为合法的。现给出 nnkk,求有多少种合法的排列。

由于答案很大,请输出答案对 924844033924844033 取模的结果。

【数据范围】

2n2×1032\leq n\leq 2\times 10^31kn11\leq k\leq n-1

3 1
2
4 1
5
4 2
9
4 3
14
425 48
756765083

提示

制約

  • 2  N  2000 2\ ≦\ N\ ≦\ 2000
  • 1  K  N1 1\ ≦\ K\ ≦\ N-1

Sample Explanation 1

(1, 2, 3) (1,\ 2,\ 3) , (3, 2, 1) (3,\ 2,\ 1) 2 2 つが条件を満たす。

Sample Explanation 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 5 つが条件を満たす。