问题:
- 给定一个整数N,求N!末尾的0的个数。
- 求N!的二进制表示中最低位1的位置。
分析与解法:
—— 问题1
【解法一】
计算因式分解中5的指数,再求和。
代码:
int zeroNum(int N)
{
int num = 0;
for(int i = 0; i <= N; i++)
{
int j = i;
while(j % 5 == 0)
{
num++;
j =/ 5;
}
}
return num;
}
【解法二】
代码:
int zeroNum(int N)
{
int num = 0;
while(N)
{
N /= 5;
num += N;
}
return num;
}
——问题2
【解法一】
代码:
int onePos(int N)
{
int num = 0;
while(N)
{
N >> 1;
num += N;
}
return num + 1;
}
【解法二】