/*
*问题:正整数N的阶乘是N!,求N!的二进制数的最低位1的位置
*思路:求最低位1的位置 => 最低位1的位置=N!的二进制数的结尾0的个数 + 1 => N!的二进制数的结尾0的个数=N!中因数2的个数
*解法:N!中质因数2的个数 = N/2 + N/(2x2) + N/(2x2x2) + ...
*/
#include <stdio.h>
int count(N)
{
int num = 0;
while (N)
{
num += N/2;
N /= 2;
}
return num + 1;
}
int main(void)
{
printf("%d\n", count(6));
return 0;
}
N!最低位1的位置
最新推荐文章于 2024-08-09 17:46:52 发布