关闭

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

125人阅读 评论(0) 收藏 举报
分类:

问题:

  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;
}

【解法二】
这里写图片描述

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:22971次
    • 积分:1020
    • 等级:
    • 排名:千里之外
    • 原创:82篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类