程式設計之美讀書筆記2 2 不要被階乘嚇倒

2021-06-27 06:32:47 字數 799 閱讀 2720

問題

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

2) 求n!的二進位制表示中最低位1的位置。 

3)給定整數n,判斷它是否為2的方冪

問題1詳解

解法1:

解法2:

**:using namespace std;

int m1(int n)

}return count;

}int m2(int n)

return count;

}int main()

問題2詳解:

解法1:

假設是8! 有1 2 3 4 5 6 7 8

第一次 則它有 2 4 6 8四個具有2的質因數

第二次 2 4 6 8變為 1 2 3 4 則只有 2 4具有2的質因數

第三次 2 4 變為 1 2 則只有2 具有2的質因數

解法2:

**:#include

using namespace std;

int m1(int n)

return count;

}int m2(int n)  

return n-ncount;  

}  int main()

問題3詳解

解法1:判斷最高位是否為1即可

#include

using namespace std;

bool m(int n)

int main()

return 1;

}int main()

程式設計之美2 2 不要被階乘嚇倒

對n 進行質因數分解,n 可以分解成2 x 3 y 5 z 只有2 5才會使n 的末尾產生1個0,也就是說n 的質因數分解中有多少個2,5對末尾就有多少個0,而n 的質因數中5的個數要少於2的 個數,也就是說2,5對的個數取決於質因中5的個數,所以問題轉化為求n 中質因數5的個數 5的個數z n 5...

程式設計之美 2 2 不要被階乘嚇倒

題目 1.給定乙個整數n,那麼n的階乘n!末尾有多少個0?2.求n 的二進位制表示中最低位1的位置。分析與解答 對於題目1 最簡單直接的方法,算出n!再看10的倍數關係。複雜度雖然不高,但致命的問題是溢位。在n不到100的時候就會引起溢位,所以雖然這是乙個正確的方法,但在實際中卻不能使用。這時就需要...

階乘MySQL 程式設計之美 2 2不要被階乘嚇到

題目 1 給定乙個整數n,那麼n的階乘n!末尾有多少個0?例如n 10,n!3628800,末尾有兩個0.2 求n!的二進位制表示中最低位1的位置。問題一 題目解析 這道題如果直接求n!的話也可以,不過萬一溢位了怎麼辦?即使定義longlong型別的也不合適。那 題目 1 給定乙個整數n,那麼n的階...