某工厂内的生产线大致可以分为生产区、质检区和装配区三个部分。
如上图所示,左边部分是生产区,生产区中一共有N个产品,从右向左标号依次为1、2、……、N。中间部分是质检区,质检区最多只能容纳P个产品,由于设计原因,质检区可以看成是一个栈,每一次质检员只能从栈顶取产品来进行质检。右边部分是装配区,质检员质检完成后需要立即将产品送入装配区。
某一时刻的生产线状态如下图所示。
现在需要将左边生产区的产品全部运送到装配区进行装配。每个产品必须进入一次中间的质检区进行质检,然后才能运输到右边的装配区。对于给定的质检区容量P和生产区产品数量N,请你计算一下所有产品到达右边的装配区时共有多少种不同的排列顺序。
输入数据为一行两个整数N、P,分别代表左边生产区的产品数量,和中间质检区的最大容量。
输出数据为一行一个整数,为排列顺序数除以4096的余数。
3 2
4
【样例说明】
当左边的生产区有3件产品,中间的质检区容量为2时,所有产品到达右边的装配区时共有以下4种排列方式:123、132、213、231。
【数据规模与约定】
70%的数据,1≤N≤500、1≤P≤300
100%的数据,1≤N≤2000、1≤P≤2000
时间限制 | 1 秒 |
内存限制 | 256 MB |