写代码

TimeLimit:3000MS  MemoryLimit:256MB
64-bit integer IO format:%I64d
未提交 | 登录后收藏
Problem Description

从事大型项目的程序员刚刚收到了一项任务,即编写恰好 m 行代码。 有 n 个程序员在做一个项目,他们中的第 i 个在他编写的每一行代码中都制造了 ai 个错误。

如果 v1 + v2 + ... + vn = m,我们称一个非负整数序列 v1, v2, ..., vn 为计划。 程序员遵循这样的计划:一开始,第一个程序员写给定任务的前 v1 行,然后第二个程序员写给定任务的 v2 多行,以此类推。 最后,最后一个程序员编写剩下的代码行。 如果任务的所有书面行总共包含最多 b 个错误,我们就称计划为好。

你的任务是确定有多少不同的好计划。 由于计划的数量可能很大,打印这个数字的余数模给定正整数模。


Input

第一行包含四个整数 n, m, b, mod (1 ≤ n, m ≤ 500, 0 ≤ b ≤ 500; 1 ≤ mod ≤ 10^9 + 7)——程序员的数量,程序中的代码行数 任务,错误的最大总数和打印答案时应该使用的模数。


下一行包含 n 个空格分隔的整数 a1, a2, ..., an (0 ≤ ai ≤ 500) — 每个程序员每行的错误数。


Output

打印一个整数表示问题的答案

SampleInput 1
3 3 3 100
1 1 1
SampleOutput 1
10
SampleInput 2
3 6 5 1000000007
1 2 3
SampleOutput 2
0
SampleInput 3
3 5 6 11
1 2 1
SampleOutput 3
0
Submit
题目统计信息详细
总AC数8
通过人数8
尝试人数9
总提交量13
AC率61.54%
AC该题后可以添加标签
贴完标签可以获得20ACB。
并且可以获得本题所有提交代码查看权限。
点击标题可以显示标签。
如果你还没认真思考过这题,请不要查看标签
如果您已经通过了该题,请务为该题贴上标签

T^T Online Judge

[BUG反馈] [FAQ] [闽ICP备17026590号-1]
当前版本:3.24 系统时间: