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

原创 2015年11月19日 11:21:49

问题:

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

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

版权声明:本文为博主原创文章,未经博主允许不得转载。

《编程之美》学习笔记——2.2不要被阶乘吓倒

一、问题   1、给定一个整数N,那么N的阶乘N!末尾有多少个0?   例子:10!=3 628 800,则 N!的末尾有两个0。   2、求N!的二进制表示中最低位1的位置。 二、问题1解法   ...

编程之美_2.2_不要被阶乘吓倒

问题描述 1、给定一个整数N,阶乘N!末尾有多少个0 2、求N!的二进制表示中最低位1的位置 1、给定一个整数N,阶乘N!末尾有多少个0 举例:10!=3 628 800,则 N!的末尾有两个0 思路...

【编程之美】不要被阶乘吓倒+SOJ-1159

转自人人网。 阶乘(Factorial)是个很有意思的函数,但是不少人都比较怕它,我们来看看两个与阶乘相关的问题: 1. 给定一个整数N,那么N的阶乘N!末尾有多少个0呢?例如:N=10,...

编程之美-2.2-不要被阶乘吓倒

题目: 1. 给定一个整数N,那么N的阶乘N!末尾有多少个0? 2. 求N!的二进制表示中最低位1的位置。 分析与解答: 对于题目1: 最简单直接的方法,算出N!再看10的倍数关系。复杂度虽...

[编程之美] PSet2.2 不要被阶乘吓倒

 问题1:‍给定一个整数N,那么N的阶乘N!末尾有多少个0呢?例如:N=10,N!=3 628 800,N!的末尾有两个0。 思路: 问题2:求N!的二进制表示中最低位1的位置。 这个...

编程之美读书笔记-不要被阶乘吓倒

本文转载自N!含有质因子2的个数 题目:求N!的二进制表示中最低位1的位置。 解析:这个问题实际上等同于求N!含有质因数2的个数,等于[N/2]+[N/4]+[N/8]+[N/16]+…。 #inc...

编程之美-不要被阶乘吓到

题目 1、给定一个整数N,那么阶乘N!末尾有多少个0呢? 2、求N!的二进制表示中最低位1的位置? 先来看怎么计算阶乘,当然可以是循环,也可以是递归,上代码: public long fact...
  • My_Jobs
  • My_Jobs
  • 2015年01月30日 12:53
  • 760

编程之美2.2 不要被阶乘吓到

N的阶乘后面会有多少个0呢?N的阶乘等于1*2*3*……*N=N!
  • ZCSYLJ
  • ZCSYLJ
  • 2011年05月04日 10:31
  • 2046

代码 编程之美 P121 2.2不要被阶乘吓到

1. 求N!的末尾0的个数; 2.求N!的二进制表示中最低位1的位置; 解:1. 开始时用的归纳方法。           N         个数           1~4  ...

编程之美: 第二章 数字之魅 2.2不要被阶乘吓到

/* 不要被阶乘吓到: 1给定一个整数N,那么N的阶乘等于N!,末尾有多少个0呢,例如N=10,N!=3628800,N!的末尾有两个0 2求N!的二进制表示中最低位为1的位置。 分析: 哪些数相乘...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:《编程之美》——不要被阶乘吓倒
举报原因:
原因补充:

(最多只允许输入30个字)