Easy-题目32:172. Factorial Trailing Zeroes

转载 2016年05月30日 20:18:47

题目原文:
Given an integer n, return the number of trailing zeroes in n!.
题目大意:
给出正整数n,求n!末尾有几个0.
题目分析:
trivial的做法是把n!求出来,然后除10直到余数不为0,但开销太大(使用BigInteger)
那么分析一下:
(1)0的来源是2*5=10,那么将n!因式分解,有几个2*5就有几个0;
(2)只有末尾是5和0的数里面才有因子5,所以无论如何,n!中因子5都比因子2多,因此数n!里面有几个因子5即可。
(3)接下来比较难以理解,使用分治算法逐步降低问题规模,其递推公式为:
令f(x)表示正整数x中因子5的个数
当0 < n < 5时,f(n!) = 0;
当n >= 5时,f(n!) = k + f(k!), 其中 k = n / 5(取整)。
源码:(language:c)

int trailingZeroes(int n) {
    int ret = 0;
    while(n) {
        ret += n/5;
        n /= 5;
    }
    return ret;  
}

成绩:
0ms,beats 62.92%,众数4ms,59.55%.
cmershen的碎碎念::
代码实现仅有6行,但其中的数学背景却不是很好理解。该递推关系的数学推导见http://blog.csdn.net/niushuai666/article/details/6695790

数论基础:阶乘的后尾0个数Trailing Zeroes (III)

阶乘的定义:N! = 1*2*…*N 题意:给你一个后尾0的个数,要你求,这可能是哪个数的阶乘,只求其最小值分析:1.这个 10=2*5 且 任意连续的5个数值以内,2的倍数一定大于5的倍数 所...
  • u011412840
  • u011412840
  • 2017年12月21日 22:14
  • 47

Trailing Zeroes (III) (数论(二分查找值,规律))

题目来源:https://vjudge.net/problem/LightOJ-1138 【题意】 求一个尽可能小的数n,其阶乘的后面有q个0。 【思路】 一开始推得数学公式,然后想错了,,,...
  • duan_1998
  • duan_1998
  • 2017年05月19日 21:19
  • 149

题目32:二叉树遍历

http://ac.jobdu.com/problem.php?cid=1040&pid=31 题目描述: 二叉树的前序、中序、后序遍历的定义: 前序遍历:对任一子树,先访问跟,然后...
  • newner
  • newner
  • 2013年03月05日 11:25
  • 401

【LightOJ】1138 - Trailing Zeroes (III)(数论,二分法)(POJ-1401类型题)

D - D Time Limit:2000MS     Memory Limit:32768KB     64bit IO Format:%lld & %llu Submit Status D...
  • wyg1997
  • wyg1997
  • 2016年03月22日 16:20
  • 206

Swift学习之十四:闭包(Closures)

/* 闭包(Closures) * 闭包是自包含的功能代码块,可以在代码中使用或者用来作为参数传值。 * 在Swift中的闭包与C、OC中的blocks和其它编程语言(如Python)中的lamb...
  • woaifen3344
  • woaifen3344
  • 2014年06月09日 19:09
  • 29364

如何打patch 及git 打patch 失败的处理方法

最近分配了一些打patch的任务。打的那个叫稀巴烂。想必对我很失望。这个过程中学到了如何打patch. 正常来说我们打的git生成的标准patch如果没有没有问题那很好打。 只需要进入patch对应的...
  • RonnyJiang
  • RonnyJiang
  • 2017年01月11日 15:46
  • 2899

(题目32)题目1078:二叉树遍历

#include #include typedef struct Node { char e; Node *lchild,*rchild; }Nodue,*BiTree; void Pos...
  • l739808683
  • l739808683
  • 2015年03月21日 19:23
  • 225

Netty 学习(6)Netty Example 计算序列的阶乘

FactorialClient.java Sends a sequence of integers to  FactorialServer to calculate  the factorial of...
  • yang382197207
  • yang382197207
  • 2014年01月22日 16:32
  • 1255

HDU1124:Factorial(简单数论)

Factorial Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total ...
  • junior19
  • junior19
  • 2017年01月24日 18:29
  • 67

#172. 完美距离

听说这题只用普通的线段树就可以了,但我却用了线段树合并。也许蒟蒻对概念并不够了解。 注意N要定义为200000,因为环的处理要占两倍内存。考试的时候没想清楚,一开始只得了三十分,后来悄悄看了成绩后直接...
  • wamach
  • wamach
  • 2016年12月29日 13:51
  • 119
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Easy-题目32:172. Factorial Trailing Zeroes
举报原因:
原因补充:

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