扑克牌谁会啊

4. 扑克牌

题目ID:9326必做题100分

最新提交:

Runtime Error

0 分

历史最高:

Runtime Error

0 分

时间限制: 1000ms

空间限制: 65535kB

题目描述

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

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

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

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

输入格式

第一行两个整数为 nn, mm。

第二行 m 个整数 a_iai​​​ ​。

输出格式

此数模 1000710007 后的结果。

样例

Input 1

5 2 3 1

Output 1

20

Input 2

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

Output 2

8707

样例解释

对于 50% 的数据:M=1M=1。对于 100% 的数据:1≤n≤10^41≤n≤104,1≤m≤1001≤m≤100,0≤a_i​≤1000≤ai​​≤100。

数据范围

第一行两个整数为 nn, mm。第二行 m 个整数 a_i​ai​​。

你知道 CA 吗?
A 是排列数, C 是组合数,公式如下:

A^m_n=\frac{n!}{(n-m)!}\\ C^m_n=\frac{A^m_n}{m!}=\frac{n!}{m!(n-m)!}

其中 ! 表示阶乘符号, x!=1\times2\times3\times\ldots\times x
关于 C 还有一个递推式:

C^m_n= \begin{cases} 0\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,(m>n或n<1)\\ C^m_{n-1}+C^{m-1}_{n-1}\,\,\,\,\,\,\,\,\,\,\,\,\,(其它情况) \end{cases}

要根据这个做题

我第一次看到阶乘以为是 x不等于 1×2×3×······ ×x

不等于我会写成 \neq

因为C++的≠是!=

我知道