《编程之美》——不要被阶乘吓倒

问题:

  1. 给定一个整数N,求N!末尾的0的个数。
  2. 求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;
}

【解法二】
《《编程之美》——不要被阶乘吓倒》

    原文作者:zengzhen_csdn
    原文地址: https://blog.csdn.net/zengzhen_csdn/article/details/49925095
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞