題目:從m個不同元素中取出n (n ≤ m)個元素的所有組合的個數,叫做從m個不同元素中取出n個元素的組合數。組合數的計算公式如下:
c(m, n) = m!/((m - n)!n!), 問:如果將組合數
c(m, n)寫成二進位制數,這個二進位制數末尾有多少個零?(其中n
≤ m≤ 1000)
案例:sample input
24 21000 500
sample output
16
題目分析:
首先將組合計算公式化簡,得c(m,n)=(n+1)*(n+2)*...*m/(n-1)!,求取組合數化為二進位制數末尾有幾個0,若依次計算乘除,資料過於龐大。因為二進位制為得2進1,可以考慮計算分子中有幾個約數2(假設為k個),分母中又有幾個約數2(假設為t個),則所求結果為(k-t)個。
源**:
1 #include2using
namespace
std;
3int
main()416
}17for(j=2;j<=m-n;j++)
18 23}
24 cout26return0;
27 }
1021 組合數末尾的零
題目 description 從m個不同元素中取出n n m 個元素的所有組合的個數,叫做從m個不同元素中取出n個元素的組合數。組合數的計算公式如下 c m,n m m n n 現在請問,如果將組合數c m,n 寫成二進位制數,請問轉這個二進位制數末尾有多少個零。input 第一行是測試樣例的個數t...
CSU 1021 組合數末尾的零
time limit 1 sec memory limit 128 mb從m個不同元素中取出n n m 個元素的所有組合的個數,叫做從m個不同元素中取出n個元素的組合數。組合數的計算公式如下 c m,n m m n n 現在請問,如果將組合數c m,n 寫成二進位制數,請問轉這個二進位制數末尾有多少...
組合數末尾的零
c m,n m m n n 將組合數c m,n 寫成二進位制數,這個二進位制數末尾有多少個零?自然數可以進行質因數分解,質因子2的指數即相應二進位制末尾零的個數 將各個數二進位制末尾0的個數累加,得到階乘數末尾0的個數。優化 include int f int main printf d n ans...