不要被階乘嚇倒

2021-04-18 04:04:55 字數 534 閱讀 7623

階乘(factorial)是個有意思的函式,但是不少人都比較怕它,我們來看看兩個與階乘相關的問題.

1.給定乙個整數n,那麼n的階乘n!!末尾有多少個0呢?例如:n=10,n!=3628 800的末尾有兩個0...

2.對於n!的二進位制表示中最低位1的位置.

解:

問題一的解法一:

第乙個問題比較簡單我一下就想出來,就是知道n!中有多少個2的,和多少個5乘就可以,並且5的個數乙個小於2,所以我寫出的演算法為:

#include

using namespace std;

int main(int argc, char* argv)

cout<解法二:

這解法也相當經典公式:z = [n/5] + [n/5(2)] + [n/5(3)]+.......(不用擔心這會是乙個無窮的運算,因為總存在乙個k,使得5(k)>n, n/5(k) = 0.)

ret = 0;

while(v)

不要被階乘嚇倒

public class jiecheng system.out.println count n的階乘中 因子k 的個數有個公式 z n k n k2 n k3 n kx param a public static void execute2 int a system.out.println cou...

不要被階乘嚇倒

問題1 n的階乘中末尾有幾個0 考慮對n!進行質因數分解,n!2 x 3 y 5 z 由於10 2 5,所以m只跟x和z相關,每一對2和5相乘可以得到乙個10,於是m min x,z 不難看出x大於等於z,因為能被2整除的數出現的頻率比能被5整除的數高得多,所以把公式簡化為m z。其實也就是求n的階...

不要被階乘嚇倒

階乘 factorial 是個很有意思的函式,但是不少人都比較怕它,我們來看看兩個與階 1.給定乙個整數n,那麼n的階乘n!末尾有多少個0呢?例如 n 10,n!3 628 800,n!的末尾有兩個0。2.求n!的二進位制表示中最低位1的位置。有些人碰到這樣的題目會想 是不是要完整計算出 n!的值?...