組合數學是數學的重要組成部分,是一門研究離散對象的科學,它主要研究知足必定條件的組態(也稱組合模型)的存在、計數以及構造等方面的問題。組合數學的主要內容有組合計數、組合設計、組合矩陣、組合優化等。html
隨着計算機科學的日益發展,組合數學的重要性也日漸凸顯,由於計算機科學的核心內容是使用算法處理離散數據。ios
今天咱們來研究組合數學中的一個有趣的問題,也是一個簡單的計數問題:算法
從一副含有 nn 張的撲克牌(每張撲克牌都不相同)中,分給 mm 我的,第 ii 我的獲得 a_iai 張牌,求一共有幾種分法,這個數可能很是大,請輸出此數模 1000710007 後的結果。優化
第一行兩個整數爲 n,mn,m。spa
第二行 mm 個整數 a_iai。設計
此數模 1000710007 後的結果。3d
5 2 3 1
20
20 19 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
8707
對於 50\%50% 的數據:M=1M=1。orm
對於 100\%100% 的數據:1 \leq n \leq 10^41≤n≤104,1 \leq m \leq 1001≤m≤100,0 \leq a_i \leq 1000≤ai≤100。htm
解析:題目很容易發現用到是組合數和乘法原理。對象
給第1我的分配的方法數爲:c(n,a[1]);
給第2我的分配的方法數爲: