#P14648. [IATI2017 day2]crypto

    ID: 13864 传统题 1000ms 256MiB 尝试: 2 已通过: 1 难度: 7 上传者: 标签>CF2200动态规划组合数学前缀和计数DP数论

[IATI2017 day2]crypto

题目描述

Pesho 正在对一个长度为 NN 的序列进行加密,其中 11NN 每个整数都恰好出现一次。他使用如下算法:

  1. 将原序列中的每个数 XX 替换为第 XX 个质数。
  2. 随机选择一个正整数 KK,满足 KNK \le N
  3. 考虑所有连续子序列。对于每个长度至少为 KK 的连续子序列,记下其中最小的 KK 个数的乘积
  4. 设上一步记下的不同乘积个数为 PP
  5. 最终密码记为 "N K P"

下面看一个例子,Pesho 如何对序列 {4,1,3,2}\{4,1,3,2\} 加密:

  1. 44 个质数分别是 2,3,5,72,3,5,7。因此原序列中的元素被替换为:

    • 44 替换为第 44 个质数 77
    • 11 替换为第 11 个质数 22
    • 33 替换为第 33 个质数 55
    • 22 替换为第 22 个质数 33

    得到新序列 {7,2,5,3}\{7,2,5,3\}

  2. 随机选择一个数 KK。设 K=2K=2

  3. 所有连续子序列为:

    {7}\{7\}{2}\{2\}{5}\{5\}{3}\{3\}{7,2}\{7,2\}{2,5}\{2,5\}{5,3}\{5,3\}{7,2,5}\{7,2,5\}{2,5,3}\{2,5,3\}{7,2,5,3}\{7,2,5,3\}

    删去所有长度小于 K=2K=2 的子序列,并对剩余每个子序列求其中最小 K=2K=2 个数的乘积:

    • {7,2}2×7=14\{7,2\} \to 2\times 7=14
    • {2,5}2×5=10\{2,5\} \to 2\times 5=10
    • {5,3}3×5=15\{5,3\} \to 3\times 5=15
    • {7,2,5}2×5=10\{7,2,5\} \to 2\times 5=10
    • {2,5,3}2×3=6\{2,5,3\} \to 2\times 3=6
    • {7,2,5,3}2×3=6\{7,2,5,3\} \to 2\times 3=6

    因此写下的数为 {14,10,15,10,6,6}\{14,10,15,10,6,6\}

  4. 不同的数有四个:{6,10,14,15}\{6,10,14,15\},所以 P=4P=4

  5. 得到密码 "4 2 4"

Pesho 很快发现,这个算法比他原先想象的要“强”得多:仅凭密码并不总能唯一确定原序列。

请你编写程序 crypto,给定一个密码,计算有多少个可能的原始序列。答案对 1 000 000 0071\ 000\ 000\ 007 取模。

输入格式

输入的第一行包含三个正整数 NNKKPP

输出格式

输出一个整数,表示密码为 "N K P" 的原始序列个数。答案对 1 000 000 0071\ 000\ 000\ 007 取模。

数据范围

  • 1KN4001 \le K \le N \le 400
  • 1P1 000 000 0001 \le P \le 1\ 000\ 000\ 000

子任务

  • 20%20\% 的测试满足 N10N \le 10
  • 60%60\% 的测试满足 NK30000NK \le 30000

样例 1

输入

3 2 3

输出

2

样例解释

序列 {1,3,2}\{1,3,2\}{2,3,1}\{2,3,1\} 都会被加密成 "3 2 3"

样例 2

输入

4 2 4

输出

12

样例解释

满足条件的序列有:

{1,2,4,3}\{1,2,4,3\}{1,3,2,4}\{1,3,2,4\}{1,4,2,3}\{1,4,2,3\}{2,1,4,3}\{2,1,4,3\}{2,3,1,4}\{2,3,1,4\}{2,4,1,3}\{2,4,1,3\}{3,1,4,2}\{3,1,4,2\}{3,2,4,1}\{3,2,4,1\}{3,4,1,2}\{3,4,1,2\}{3,4,2,1}\{3,4,2,1\}{4,1,3,2}\{4,1,3,2\}{4,2,3,1}\{4,2,3,1\}