链接:https://www.nowcoder.com/acm/contest/135/D
来源:牛客网

题目描述

输入描述:

输入数据共一行,一个正整数n,意义如“问题描述”。

输出描述:

输出一行描述答案:一个正整数k,表示S的末尾有k个0

示例1

输入

复制

10

输出

复制

7

说明

 

求末尾有多少个0即计算乘积中有多少个5*2,所以只需要计算有多少个5相乘即可

因为n的数据范围很大,直接for循环,然后求每一个数阶乘中有多少个5的话一定会超时。

需要注意到的是,5!6!7!8!9!这些数的阶乘中5的个数是相同的。

方法1:运行时间 196ms

n!与(n+1)!之间只相差n+1,所以只需要计算n+1中有多少个5相乘,再加上n!中5的个数

ac代码:

#include<bits/stdc++.h>
using namespace std;
long long n,ans=0,te=0;
int main()
{scanf("%lld",&n);for(int i=1;i<=n;i++){int k=i;while(k%5==0){te++;k/=5;}ans+=te; }printf("%lld\n",ans);return 0;
}

方法2:  运行时间:3ms

我们知道计算n!(比如n=133)中有几个质因数5的思路是:

1、133/5=26;说明133的阶乘中有26个数是5的倍数

2、133/25=5,说明133的阶乘中有5个数是25的倍数

2、133/125=1,说明133的阶乘中有1个数是125的倍数

那么133阶乘中质因数5的个数则是26+5+1

同理,按照同样的思路,先计算133!~1!这些阶乘中每个阶乘中有几个数是5的倍数、25的倍数、125的倍数,最后相加即可。

以上图为例,k=133/5=26,五个为一组,那么这些阶乘中有(k-1)(k-1+1)/2*5+(n%5+1)*k个数是5的倍数(第一部分的求和用到了求和公式n(a1+an)/2

再令k=133/25.......k=133/125计算即可得出最终答案

ac代码:

#include <bits/stdc++.h>
#define ll long long
using namespace std;
int main()
{ll n,i,j,k,ans=0;scanf("%lld",&n);for(i=5;i<=n;i*=5){ll sum=0;k=n/i;sum=k*(k-1)/2*i;sum+=k*(n%i+1);ans+=sum;}printf("%lld\n",ans);
}

在网上百度了好久找到的都是第一种解题思路,但是我在看大佬们提交代码的时候发现了第二种方法,很明显,相比于第一种方法来说,第二种超省时,而且代码量也很少。读者根据个人喜好选择哪种解题方法哦

欢迎讨论,非诚勿扰哦~邮箱:1308989543@qq.com

牛客小白月赛5求阶乘末尾有多少个0相关推荐

  1. 牛客小白月赛5 D.阶乘(factorial)

    牛客小白月赛5 D.阶乘(factorial) 题目链接 题目描述 求 1!∗2!∗3!∗⋯∗n!1!*2!*3!*\cdots*n!1!∗2!∗3!∗⋯∗n! 的末尾有多少 000 ? 输入描述: ...

  2. 牛客小白月赛21(求三角形的外心模板)

    题目链接:https://ac.nowcoder.com/acm/contest/3947/A 分析: 三角形的外心是三条边垂直平分线的交点. 代码: #include <stdio.h> ...

  3. 牛客小白月赛58 B(暴力)C(思维)D(dp滚动数组优化)

    牛客小白月赛58 感觉没什么意思,这场月赛出题人有点问题. B 题意:给定一定的数据填充顺序和每一个填充层的名称,只有填充满了上一层才可以填充下一层. 但是每一层又属于某一个大层,一个大层中包含了若干 ...

  4. 牛客小白月赛65个人题解A-E

    1. 牛客小白月赛65 A. 牛牛去购物 题意:给定n元,购买价格为a元的篮球和价格为b的篮球,数量不定,要使得花掉的钱最多,也就是剩余的钱数最少,求这个值 (1 <= n, a, b < ...

  5. 牛客小白月赛24 J.建设道路

    牛客小白月赛24 J.建设道路 题目链接 题目描述 牛牛国有 nnn 个城市,编号为 1-n,第 iii 个城市有一个价值 aia_iai​ ,牛国的国王牛阔落特别喜欢在牛牛国旅游,并且他不想每次旅游 ...

  6. 牛客小白月赛25 C.白魔法师

    牛客小白月赛25 C.白魔法师 题目链接 题目描述 你是一个白魔法师. 现在你拿到了一棵树,树上有 个点,每个点被染成了黑色或白色. 你可以释放一次魔法,将某个点染成白色.(该点不一定是黑色点,也可以 ...

  7. 牛客小白月赛5 I.区间 (interval)

    牛客小白月赛5 I.区间 (interval) 题目链接 题目描述 Apojacsleam喜欢数组.他现在有一个n个元素的数组a,而他要对a[L]-a[R]进行M次操作:操作一:将a[L]-a[R]内 ...

  8. 牛客小白月赛27 B.乐团派对

    牛客小白月赛27 B.乐团派对 题目链接 题目描述 音乐是带给大家快乐的存在,而你的目标就是组建若干支乐队,让世界听到你们的演奏! 你目前有 nnn 位乐手,每位乐手只能进入一个乐队,但并不是每位乐手 ...

  9. 牛客小白月赛23(A、B

    牛客小白月赛 A.膜法记录 题意: 给n行m列的矩阵,矩阵中的每个位置都可能有敌人 现在你能消灭a行和b列的敌人,问是否有可能将所有敌人都消灭. 数据范围:n<=20,m<=1e5 思路: ...

  10. 牛客小白月赛28 D.位运算之谜

    牛客小白月赛28 D.位运算之谜 题目链接 题目描述 a+ba + ba+b 的值为 xxx,a&ba\&ba&b 的值为 yyy,首先需要判断能否有一组 a,ba,ba,b ...

最新文章

  1. 谷歌排名第一的编程语言,死磕它这两点,小白也能学的会!不信你看!
  2. 发表学术论文必须做的十件事(下)
  3. BZOJ1449[JSOI2009]球队收益BZOJ2895球队预算——最小费用最大流
  4. HDU 5097 Page Rank (模拟)
  5. spring集成redis(ehcache缓存改成redis)
  6. LeetCode Shell 194. 转置文件
  7. hive与hbase的以及mongodb和cassandra区别整理
  8. java独步寻花,小班语言《江畔独步寻花》
  9. 《三毛。。。。》烂漫
  10. 排序分发“魔法照片”(洛谷P1583题题解,Java语言描述)
  11. 数据结构之图的应用:关键路径
  12. Java的 published_Umbraco当没有当前的PublishedContentRequest时,无法呈现宏
  13. 嵌套访问_利用Idea重构功能及Java8语法特性——优化深层嵌套代码
  14. WhatsApp被曝内部收集用户数据
  15. Java 技术书籍大全
  16. mysql发音_mysql应该怎么念?
  17. ping ping ping
  18. android 老人机模式,如何将智能手机切换成老人机模式
  19. Go 语言如何自定义 linter(静态检查工具)
  20. Bancor协议丨EKT多链技术通往新区块世界的大桥

热门文章

  1. html背景框颜色,DIV+CSS颜色边框背景等样式 - roucheng
  2. layui框架简单解读,为什么要使用layui框架,layui框架的好处,后端程序员快速学习掌握layui框架技术型文档博文,layui学习笔记,快速掌握前端技术框架
  3. 10g gtx 光纤通信测试_10G以太网光口与Aurora接口回环实验
  4. mongodb python 大于_菜鸟成长记--如何根据关键词爬取微博内容?(scrapy+mongodb)
  5. 计算机电源在线工作,计算机开关电源的工作原理与维修2.pdf
  6. c语言中rcu缩写,ICU、MICU、EICU、NICU、NCU、CCU、RCU,科室英文缩写大全
  7. Caliburn.Micro入门
  8. Response.Redirect导致session丢失的解决办法
  9. 当零售行业遇上小程序,该如何玩转全新商业模式
  10. 数据库IO性能知识整理