`

11. Factorial

    博客分类:
  • SPOJ
阅读更多
Factorial

    这个题目已经做过N多遍了,在各大OJ上都有。
     题目大意:给定一个正整数n,求n!未尾有多少个0。
     算法分析:我们很容易发现阶乘未尾的0是由5产生的,即n!中有多少个5就有多少个0。从而问题就转化为求n!中分解质因数后5的系数。我们对其进行分类计数,首先求是5的倍数的数多少个,然后再求25的倍数,再求125的倍数,…………,直到为0。最后把这些数全部加起来即为答案。为什么可以这样呢?比如求25的倍数时5不是每一个都出现了两次却只计数一次吗?非也!我们在求5的倍数时已经给25的倍数计数过一次,同理求5的倍数和求25的倍数时也给125的倍数计数过一次…………。这种方法可以用在对n!进行质因数分解中,首先求1~n之间的素数,然后对每一个素数按照上面的方法求系数即可!
    
#include <iostream>
#include <cstdio>//注意此题的输入输出最好用scanf,printf,因为数据量比较大
using namespace std;
int getZero(int n)
{
    int sum=0;
    while(n)
    {
        sum+=n/5;
        n/=5;
    }
    return sum;
}
int main()
{
    int t;
    scanf("%d",&t);
    while(t--)
    {
        int n;
        scanf("%d",&n);
        printf("%d\n",getZero(n));
    }
    return 0;
}

分享到:
评论

相关推荐

    Factorial (双)阶乘快速计算器 V7.0.0.0

    Factorial (双)阶乘快速计算器 V7.0.0.0 11 KB 一个可以快速计算(双)阶乘的绿色免费软件,是作者抽取了自开发的“HugeCalc”核心算法开发的,可以独立运行。 在双核上测试,精确计算 40,000,000!,HugeCalc 比...

    perlgolf_history_070109.pdf

    Intro..............................................................................................................................................11 2. On The Game.....................................

    python programming

    3.3 Accumulating Results: Factorial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 3.4 The Limits of Int . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ....

    【java学习记录】11.多线程实现阶乘计算(Thread类和Runnable接口)

    long factorial = 1; for (int i = 1; i ; i++) { factorial *= i; } System.out.println(number + "! = " + factorial); } } ``` 在这个例子中,我们创建了一个名为`FactorialThread`的类,它扩展了`Thread`...

    disc11.pdf

    非尾递归版本的`factorial`函数在递归调用后还需要执行乘法操作,这意味着每次递归调用都会在栈上创建新的帧来存储中间结果。当计算较大的数值时,这会导致栈的深度增加,最终可能导致栈溢出错误。 相比之下,尾...

    SNTGT_number_Factorial_prime_

    例如,2、3、5、7、11等都是素数,而4、6、8、9、10不是素数,因为它们可以被除1和自身以外的其他数整除。 阶乘则是将一个正整数n与小于它的所有正整数相乘得到的结果。例如,5的阶乘(5!)就是5 × 4 × 3 × 2 ×...

    Python基础教程:math库常用函数.pdf

    11. `math.fmod(x, y)`:返回x除以y的余数,结果是一个浮点数。例如,`math.fmod(20, 3)`返回2.0。 12. `math.frexp(x)`:返回一个元组`(m, e)`,其中m是x除以2的e次幂的结果,e是一个整数,使得`x = m * 2**e`。...

    acm练习题目之原题

    7. Factorial算法:Factorial算法是指计算阶乘的算法,在本题目中,需要计算从1到n的阶乘之和。 8. 循环结构:循环结构是指在编程语言中使用的循环语句,用于重复执行某些语句。在本题目中,使用了for循环来遍历...

    Lecture_11_files(1).rar

    8. **factorial.py** - 最后,factorial.py可能包含了计算阶乘的函数。阶乘是数学中的一个重要概念,也常用于编程中的组合计数问题,可以使用递归或循环实现。 综合以上分析,这个压缩包中的文件涵盖了一系列Python...

    java 试题的一些题型

    Factorial fact = new Factorial(); System.out.println(fact.factorial(5)); // 输出 120 System.out.println(fact.factorial(17)); // 输出一个很大的数 ``` 3. 对象间的通信与方法调用:对象间通信主要是通过...

    Python math模块总结.pdf

    11. `math.erf(x)`和`math.erfc(x)`: 分别返回x的误差函数和互补误差函数,常用于概率论和统计学。 12. `math.exp(x)`: 返回e的x次幂,即e^x。 13. `math.expm1(x)`: 返回e^x - 1,对于小的x值,比直接计算更精确。 ...

    文字文稿1.docx

    11. **列表推导式**: - 在循环中创建新的列表,如 `sum += a/b*pow(-1,i)` 和 `sum += i*i`。 12. **逻辑判断**: - 判断字符串长度是否能被一个整数整除,使用 `%` 运算符。 通过这些练习题,学习者可以巩固...

    python中math模块函数.pdf

    15. math.factorial(x) 函数:返回 x 的阶乘,x 必须是非负整数。 16. math.floor(x) 函数:返回小于或等于 x 的最大整数。 17. math.frexp(x) 函数:返回 x 的值为二进制表示形式的尾数和指数。 18. math.fsum(x...

    Python math模块总结 (2).docx

    11. `math.erfc(x)`:返回x的标准正态分布的互补误差函数。 12. `math.exp(x)`:返回e(自然对数的底数)的x次幂。 13. `math.expm1(x)`:返回e的x次幂减1,通常比`math.e ** x - 1`更精确。 14. `math.fabs(x)`:...

    CC++ 编译器和调试器以及静态库 动态库使用汇总

    在本例中,我们有两个源文件`main.c`和`factorial.c`,这两个文件共同构成一个完整的程序,用于计算阶乘。 **`factorial.c` 文件:** ```c #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; int factorial(int n) { if (n...

    Matlab英文词汇大全

    11. confidence interval(置信区间):对总体参数的一个区间估计,该区间具有一定的置信水平,表明总体参数有很高的概率落在此区间内。 12. beta-distribution(贝塔分布):一种定义在区间[0,1]上的概率分布。 ...

    python小课30个常用实现借鉴.pdf

    4. **阶乘计算**:阶乘表示所有小于及等于该数的正整数的乘积,Python的math库提供了`math.factorial(n)`函数,也可自定义实现。 5. **列出目录内容**:使用`os`模块的`os.listdir()`可以获取当前目录下的所有文件...

    Java语言程序设计与数据结构11版.ch9-2.docx

    - `static`修饰符用于声明`main`函数和`factorial`函数,这意味着它们是类方法,不依赖于对象实例就可以调用,因为它们不使用任何非静态变量。 3. **静态与实例方法的调用限制**: - 静态方法不能调用实例方法或...

    python小课30个常用实现可用.pdf

    11. **九九乘法表**:利用for循环和print函数,可以定制打印出乘法表,通过`end`参数控制不换行输出。 12. **替换列表元素**:列表的元素可以通过索引或迭代进行替换,例如`list comprehension`可以批量替换特定值...

Global site tag (gtag.js) - Google Analytics