N!

N!

时间限制:1000 ms  |  内存限制:65535 KB
难度:3
描述

阶乘(Factorial)是一个很有意思的函数,但是不少人都比较怕它。现在这里有一个问题,给定一个N(0<0<1000000000),求N!的二进制表示最低位的1的位置(从右向左数)。

输入
本题有多组测试数据,每组数据一个正整数N(0<0<1000000000),以EOF结束
输出
求N!的二进制表示最低位的1的位置(从右向左数)。一组数据占一行。
样例输入
1
2
3
4
样例输出
1
2
2
4

// 算法    因为是二进制   从低位到高位找第一个1

// 所以 就应该找  输入的数有  多少质因子 2,有多少就应该进多少位


<span style="font-family:SimSun;font-size:18px;">#include <stdio.h>
int main()
{
    int n,i;
    while(scanf("%d",&n)!=EOF)
    {
        int sum=0;
        for(i=2;i<=n;i*=2)
        {
            sum+=n/i;    //  记录质因子 2 的个数
        }
        sum++;    
        printf("%d\n",sum);
    }
    return 0;
}</span>


你可能感兴趣的:(N!)