首页 > 其他分享 >51Nod-1003-阶乘后面0的数量

51Nod-1003-阶乘后面0的数量

时间:2022-10-31 18:00:17浏览次数:48  
标签:25 20 51Nod LL 因子 阶乘 100 1003 define


51Nod-1003-阶乘后面0的数量_51Nod

这道题网上已经有很多博客了,但是都没讲清楚,想明白后遂做此记录。

阶乘后面0的数量,乘起来是以0结尾,只能是​​2 x 5​​​,说0结尾的走开。而2的数量肯定比5多不,所以只要计算5的数量即可。但是这个5,不是​​5,15,25...​​ 这样的明面上的5,而是5作了多少个因子。比如对于5来说,只有一个因子是5,而对于25来说,则有25=5*5,这就是两个5。

故而算法代码如下,别人家博客也都是到此为止了,但是上面的道理我都懂,代码为什么是这么写的?且听我解释。代码中关键部分就在于while循环内部,我举例来说明一下。
如果输入的n为100,那么100/5=20,20/5=4,4/5=0,所以0有20+4+0=24个。
为什么? 因为100/5计算出来的是含有因子5的数的个数,而第二步看似是20/5,但其实质为100/(5^2),也就是含有5^2的因子的数的个数,含有5^2的因子的数里的5肯定至少是2了,不过因为前面100/5已经加过第一个5了,所以这里只需要再加上第二个5即可,而如果含有5^3…,则还需要重复上述步骤即可。

#include<bits/stdc++.h>
using namespace std;
#define LL long long
#define MAX_LEN 500
#define MOD 10000000009


int main()
{
LL n;
cin>>n;

LL sum=0;

while(n>=5)
{
sum+=n/5;
n/=5;
}
cout<<sum<<endl;
}


标签:25,20,51Nod,LL,因子,阶乘,100,1003,define
From: https://blog.51cto.com/u_15854687/5810745

相关文章

  • 计算n的阶乘,n的取值范围1到2000(代码实现)
    题目:计算n的阶乘,n的取值范围1到2000思路:寻常的基本数据类型没有办法存储这样大的数,这里借助Java的BigInteger类来实现,需要注意的一点BigInteger,不能够直接使用+,-,*,/的符号进......
  • 求阶乘数
    /* inti; intsum=0; for(i=1;i<=20;i++){ sum+=jc(i); } printf("%d",sum);*/#include<stdio.h>doublejc(intm){ intj; doublechengji=1;......
  • 【51NOD1847】奇怪的数学题(杜教筛,min_25筛,第二类斯特林数解决自然数幂求和)
    设\(f(n)\)表示\(n\)的次大因数。\[\begin{aligned}&\sum_{i=1}^n\sum_{j=1}^nf(\gcd(i,j))^k\\=&\sum_{d=1}^nf(d)^k\sum_{i=1}^{(n/d)}\sum_{j=1}^{(n/d)}[\gcd(i......
  • 【51Nod1386】双马尾机器人(分块+dp)
    对于这种找互质的数的集合的题,一般是讨论每个数的质因子会不会有重复。听说这种互质的题把质因子分为小于\(\sqrt{n}\)和大于\(\sqrt{n}\)是经典套路?因为当\(n\)很......
  • 计算n的阶乘
    #include<stdio.h>intmain(){     inti=0;     intn=0;     inta=1;     scanf("%d",&n);     for(i=1;i<......
  • 求n的阶乘(函数)
    #define_CRT_SECURE_NO_WARNINGS1#include<stdio.h>intFac(intn){ inti=0; intret=1; for(i=1;i<=n;i++) { ret*=i; } returnret;}intm......
  • 递归求阶乘
    intFac(intn){ if(n<=1) return1; else returnn*Fac(n-1);}           //括号里放的是方法(要循环的)(个人理解)intmain(){ in......
  • java递归(java递归求阶乘)
    JAVA中递归的概念说简单点就是方法调用自身方法。给你个例子:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多......
  • 阶乘和的关系
    题目链接题目大意:    给定n个正整数和一个数k,问这n个数的阶乘之和能不能被k的阶乘整除,既:(a[1]!+a[2]!+a[3]!+....+a[n]!)  %  k!  ==  0。题目分析:  对......
  • 51Nod 1088 最长回文子串——————Manacher,马拉车算法
    ​​51Nod1088最长回文子串​​基准时间限制:1秒空间限制:131072KB分值:0难度:基础题回文串是指这种左右对称的字符串。输入一个字符串,输出里最长回文子串的长度。I......