c(m, n) = m!/((m - n)!n!)
將組合數c(m, n)寫成二進位制數,這個二進位制數末尾有多少個零?
* 自然數可以進行質因數分解,質因子2的指數即相應二進位制末尾零的個數;
將各個數二進位制末尾0的個數累加,得到階乘數末尾0的個數。
優化:
# include更新:2012/3/12int f = ;
int main()
printf("
%d\n
", ans);
}return
0;}
又翻了翻程式設計之美,看到乙個求 n 的階乘末尾 0 的個數是轉化成:n - n 的二進位制表示中 1 的個數;
組合數可以化為階乘相除的形式;
而正整數 n 的二進位制表示中 1 的個數可以用 log2(n) 的方法得到,於是有了下面的:
1相比之前加表的方法各有千秋。。oj顯示的耗時都是16ms。/*csu 1021
*/2 # include 3
4int cnt(int n);56
int main()
7 16
17int cnt(int n)
18 25
return c;
26 }
組合數末尾的零
time limit 1000 ms memory limit 65536 k total submit 70 43 users total accepted 50 40 users rating special judge no description 從m個不同元素中取出n n m 個元素的所有...
I 組合數末尾的零
i 組合數末尾的零 submit page time limit 1 sec memory limit 128 mb submitted 53 solved 45 description 從m個不同元素中取出n n m 個元素的所有組合的個數,叫做從m個不同元素中取出n個元素的組合數。組合數的計算公...
組合數末尾的零(CSU)
從m個不同元素中取出n n m 個元素的所有組合的個數,叫做從m個不同元素中取出n個元素的組合數。組合數的計算公式如下 c m,n m m n n 現在請問,如果將組合數c m,n 寫成二進位制數,請問轉這個二進位制數末尾有多少個零。第一行是測試樣例的個數t,接下來是t個測試樣例,每個測試樣例佔一行...