1.給定整數n,那麼n的階乘n!末尾有多少個0?
這個問題經過質因子分解轉換為求5的指數
ret = 0;
for(i = 1; i <= n ; i++)
}
[n/k] 等於1,2,3...,n中能被k整除的數的個數
證明:1,2,3...n中能被k整數的數為:
k k*2 k*3 k*4 k*n
其中 (k+1)*n > n
k*n <= n
所以能被k整除的數為 [n/k]
ret = 0;
while(n)
2.求n!的二進位制表示中最低位1的位置
這個問題有點繞。
10001000,我們要找到第乙個1,那麼首先判斷最後乙個二進位制是否為0:若為0,則將此二進位制右移一位,即為商值。反之,若為1,則說明這個二進位制是奇數,無法被2整除。
所以這個問題實際上等同於求n!含有質因數2的個數。
int lowestone(int n)
return ret;
}
不要被階乘嚇到
程式設計之美有一道關於階乘的題目 1給定乙個整數n,那麼n的階乘等於n 末尾有多少個0呢,例如n 10,n 3628800,n 的末尾有兩個0 2求n 的二進位制表示中最低位為1的位置。階乘定義 n return ret 解法二 作者根據 n k 等於1,2,3 n中能被k整除的數的個數規律,得出下...
程式設計之美 不要被階乘嚇到
題目 1 給定乙個整數n,那麼階乘n 末尾有多少個0呢?2 求n 的二進位制表示中最低位1的位置?先來看怎麼計算階乘,當然可以是迴圈,也可以是遞迴,上 public long factorial1 int n return sum public long factorial2 int n retur...
階乘MySQL 程式設計之美 2 2不要被階乘嚇到
題目 1 給定乙個整數n,那麼n的階乘n!末尾有多少個0?例如n 10,n!3628800,末尾有兩個0.2 求n!的二進位制表示中最低位1的位置。問題一 題目解析 這道題如果直接求n!的話也可以,不過萬一溢位了怎麼辦?即使定義longlong型別的也不合適。那 題目 1 給定乙個整數n,那麼n的階...