#P4685. [IOI2008] Linear Garden

[IOI2008] Linear Garden

题目描述

拉美西斯二世刚刚获胜归来。为了纪念这一胜利,他决定建造一座壮观的花园。这个花园里的植物排成一行,从他在卢克索的宫殿直达卡纳克神庙。所种植的植物只有莲花和纸莎草,因为它们分别代表上埃及和下埃及。

这个花园中必须有NN棵植物,并且必须保持平衡,即在花园中任取一段,其中莲花和纸莎草的棵数之差不能超过22

花园可以被表示为由字母L(莲花)和P(纸莎草)组成的字符串。例如,当N=5N=5时,有1414种可能的平衡花园,按照字母排序如下:LLPLPLLPPLLPLLPLPLPLLPLPPLPPLLLPPLPPLLPLPLLPPPLPLLPLPLPPLPPLPPLLPPPLPL

给定长度的所有可能的平衡花园可按字母顺序排序,并从11开始编号。例如,当N=5N=5时,第1212号花园是PLPPL

写一个程序,给定植物棵数NN和一个表示平衡花园的字符串,计算该花园的序号模MM的结果,其中MM是一个给定的整数。 注意,在问题求解中,数值 MM 除了简化计算外没有其他的作用。

输入格式

第一行是整数NN,说明花园中植物的数量。第二行是整数MM。第三行是长度为NN的由字符LP组成的字符串,表示一个平衡的花园。

输出格式

你的程序需要向标准输出上输出一个介于00M1M-1(含)的整数,占一行,表示该花园的序号模MM

5
7
PLPPL
5
12
10000
LPLLPLPPLPLL
39

提示

有总分40分的测试点的NN不超过4040

对于所有测试点,1N1,000,0001 \leq N \leq 1,000,0007M10,000,0007 \leq M \leq 10,000,000

样例说明

第一个样例中,实际的序号是12。因此输出的是12模7,即5。