#545. Baby Doll

Baby Doll

题意描述

小诗想要你帮她做线代作业,但是向量空间是九级知识点,你还没有掌握,于是她换了道作业题给你做。

对于所有长度为 nn 的 01 串 ss (下标从 11 开始),定义 f(s)=i[si=0][si+1=1]if(s)=\sum_i[s_i=0][s_{i+1}=1]i[x][x] 表示 xx 为真),令 TT 表示所有 nn00mm11 的零一串集合,她想知道:

(sTqf(s))modp(\sum_{s\in T}q^{f(s)})\bmod p

保证 p,qp,q 是素数。

输入格式

一行四个正整数 n,m,p,qn,m,p,q

输出格式

一行一个非负整数,表示答案。

样例

样例输入 #1

1 2 2 2

样例输出 #1

1

样例解释 #1

T={011,101,110}T=\{011,101,110\} ,对应的 f(s)f(s) 值分别为 1,2,01,2,0 ,答案为 (21+22+20)mod2=1(2^1+2^2+2^0)\bmod 2=1

样例输入 #2

2 2 1444441 41

样例输出 #2

9204

样例解释 #2

T={0011,0101,0110,1001,1010,1100}T=\{0011,0101,0110,1001,1010,1100\} ,对应的 f(s)f(s) 值分别为 2,4,1,3,2,02,4,1,3,2,0 ,答案为 (412+414+411+413+412+410)mod1444441=9204(41^2+41^4+41^1+41^3+41^2+41^0)\bmod 1444441=9204

样例 3~5 见下发文件。

数据范围

对于所有测试点,保证 $1\leqslant n,m,q\leqslant 10^9,2\leqslant p\leqslant 10^7$ ,且 p,qp,q 为素数。

请注意,本题有子任务捆绑。

子任务编号 $n,m\leqslant $ $p\leqslant$ 分值
1 $1000$ $10$
2 $10^6$ $30$
3 $2$ $10$
4 $3$ $10$
5 $1000$ $10$
6 $30$