#11056. 扑克牌分法

内存限制:256 MiB 时间限制:1000 ms 标准输入输出
题目类型:传统 评测方式:文本比较
上传者: Turing001

题目描述

组合数学是数学的重要组成部分,是一门研究离散对象的科学,它主要研究满足一定条件的组态(也称组合模型)的存在、计数以及构造等方面的问题。组合数学的主要内容有组合计数、组合设计、组合矩阵、组合优化等。

随着计算机科学的日益发展,组合数学的重要性也日渐凸显,因为计算机科学的核心内容是使用算法处理离散数据。

今天我们来研究组合数学中的一个有趣的问题,也是一个简单的计数问题:

从一副含有 n 张的扑克牌(每张扑克牌都不相同)中,分给 m 个人,第 i 个人得到 a_i 张牌,求一共有几种分法,这个数可能非常大,请输出此数模 10007 后的结果。

输入格式

第一行两个整数为 n,m

第二行 m 个整数 a_i

输出格式

此数模 10007 后的结果。

样例

样例输入 #1

5 2
3 1

样例输出 #1

20

样例输入 #2

20 19
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

样例输出 #2

8707

数据范围与提示

对于 50\% 的数据: M=1

对于 100\% 的数据: 1 \leq n \leq 10^4 1 \leq m \leq 100 0 \leq a_i \leq 100