T296829 入门 T4 - 染色

题目描述

有 $n$ 颗珠子,从左到右排成一行。 你想给它们染上颜色,共有红、蓝、黄三种颜色可选,分别需要染 $a,b,c$ 颗($a+b+c=n$)。 假设第 $i$ 颗珠子染的颜色是 $d_i(1\le i\le n)$,那么你应该保证 $d_i\neq d_{i+1},d_1\neq d_n$。 求染色的方案数,对一个给定的模数取模。

输入格式

一行,四个整数,$a,b,c,mod$。其中 $mod$ 表示模数。

输出格式

一行,一个非负整数,表示答案。 你应当保证它在 $[0,mod)$ 范围内。

说明/提示

【数据范围】 本题为捆绑测试。 Subtask 1(10分):$n\le 11$ Subtask 2(10分):$a,b,c\le 50$ Subtask 3(4分):$a,b\le 10^7,c=0$ Subtask 4(20分):$a,b,c\le 150$ Subtask 5(25分):$a,b,c\le 300$ Subtask 6(30分):$a,b,c\le 1000$ Subtask 7(1 分):$a,b,c\le 10^7$,保证 $mod$ 为质数 对于所有数据,$10^8\le mod\le 10^9+100,2\le n=a+b+c$ 【时间限制】 前 $6$ 个 Subtask 为 $1s$,第 $7$ 个 Subtask 为 $3s$。