1021 組合數末尾的零

2022-08-01 09:12:12 字數 677 閱讀 7665

題目:從m個不同元素中取出n (n ≤ m)個元素的所有組合的個數,叫做從m個不同元素中取出n個元素的組合數。組合數的計算公式如下:

c(m, n) = m!/((m - n)!n!), 問:如果將組合數

c(m, n)寫成二進位制數,這個二進位制數末尾有多少個零?(其中n

≤ m≤ 1000)

案例:sample input

2

4 21000 500

sample output

1

6

題目分析:

首先將組合計算公式化簡,得c(m,n)=(n+1)*(n+2)*...*m/(n-1)!,求取組合數化為二進位制數末尾有幾個0,若依次計算乘除,資料過於龐大。因為二進位制為得2進1,可以考慮計算分子中有幾個約數2(假設為k個),分母中又有幾個約數2(假設為t個),則所求結果為(k-t)個。

源**:

1 #include2

using

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...