問題
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的階...