牛客小白月赛5求阶乘末尾有多少个0
链接: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相关推荐
- 牛客小白月赛5 D.阶乘(factorial)
牛客小白月赛5 D.阶乘(factorial) 题目链接 题目描述 求 1!∗2!∗3!∗⋯∗n!1!*2!*3!*\cdots*n!1!∗2!∗3!∗⋯∗n! 的末尾有多少 000 ? 输入描述: ...
- 牛客小白月赛21(求三角形的外心模板)
题目链接:https://ac.nowcoder.com/acm/contest/3947/A 分析: 三角形的外心是三条边垂直平分线的交点. 代码: #include <stdio.h> ...
- 牛客小白月赛58 B(暴力)C(思维)D(dp滚动数组优化)
牛客小白月赛58 感觉没什么意思,这场月赛出题人有点问题. B 题意:给定一定的数据填充顺序和每一个填充层的名称,只有填充满了上一层才可以填充下一层. 但是每一层又属于某一个大层,一个大层中包含了若干 ...
- 牛客小白月赛65个人题解A-E
1. 牛客小白月赛65 A. 牛牛去购物 题意:给定n元,购买价格为a元的篮球和价格为b的篮球,数量不定,要使得花掉的钱最多,也就是剩余的钱数最少,求这个值 (1 <= n, a, b < ...
- 牛客小白月赛24 J.建设道路
牛客小白月赛24 J.建设道路 题目链接 题目描述 牛牛国有 nnn 个城市,编号为 1-n,第 iii 个城市有一个价值 aia_iai ,牛国的国王牛阔落特别喜欢在牛牛国旅游,并且他不想每次旅游 ...
- 牛客小白月赛25 C.白魔法师
牛客小白月赛25 C.白魔法师 题目链接 题目描述 你是一个白魔法师. 现在你拿到了一棵树,树上有 个点,每个点被染成了黑色或白色. 你可以释放一次魔法,将某个点染成白色.(该点不一定是黑色点,也可以 ...
- 牛客小白月赛5 I.区间 (interval)
牛客小白月赛5 I.区间 (interval) 题目链接 题目描述 Apojacsleam喜欢数组.他现在有一个n个元素的数组a,而他要对a[L]-a[R]进行M次操作:操作一:将a[L]-a[R]内 ...
- 牛客小白月赛27 B.乐团派对
牛客小白月赛27 B.乐团派对 题目链接 题目描述 音乐是带给大家快乐的存在,而你的目标就是组建若干支乐队,让世界听到你们的演奏! 你目前有 nnn 位乐手,每位乐手只能进入一个乐队,但并不是每位乐手 ...
- 牛客小白月赛23(A、B
牛客小白月赛 A.膜法记录 题意: 给n行m列的矩阵,矩阵中的每个位置都可能有敌人 现在你能消灭a行和b列的敌人,问是否有可能将所有敌人都消灭. 数据范围:n<=20,m<=1e5 思路: ...
- 牛客小白月赛28 D.位运算之谜
牛客小白月赛28 D.位运算之谜 题目链接 题目描述 a+ba + ba+b 的值为 xxx,a&ba\&ba&b 的值为 yyy,首先需要判断能否有一组 a,ba,ba,b ...
最新文章
- 谷歌排名第一的编程语言,死磕它这两点,小白也能学的会!不信你看!
- 发表学术论文必须做的十件事(下)
- BZOJ1449[JSOI2009]球队收益BZOJ2895球队预算——最小费用最大流
- HDU 5097 Page Rank (模拟)
- spring集成redis(ehcache缓存改成redis)
- LeetCode Shell 194. 转置文件
- hive与hbase的以及mongodb和cassandra区别整理
- java独步寻花,小班语言《江畔独步寻花》
- 《三毛。。。。》烂漫
- 排序分发“魔法照片”(洛谷P1583题题解,Java语言描述)
- 数据结构之图的应用:关键路径
- Java的 published_Umbraco当没有当前的PublishedContentRequest时,无法呈现宏
- 嵌套访问_利用Idea重构功能及Java8语法特性——优化深层嵌套代码
- WhatsApp被曝内部收集用户数据
- Java 技术书籍大全
- mysql发音_mysql应该怎么念?
- ping ping ping
- android 老人机模式,如何将智能手机切换成老人机模式
- Go 语言如何自定义 linter(静态检查工具)
- Bancor协议丨EKT多链技术通往新区块世界的大桥
热门文章
- html背景框颜色,DIV+CSS颜色边框背景等样式 - roucheng
- layui框架简单解读,为什么要使用layui框架,layui框架的好处,后端程序员快速学习掌握layui框架技术型文档博文,layui学习笔记,快速掌握前端技术框架
- 10g gtx 光纤通信测试_10G以太网光口与Aurora接口回环实验
- mongodb python 大于_菜鸟成长记--如何根据关键词爬取微博内容?(scrapy+mongodb)
- 计算机电源在线工作,计算机开关电源的工作原理与维修2.pdf
- c语言中rcu缩写,ICU、MICU、EICU、NICU、NCU、CCU、RCU,科室英文缩写大全
- Caliburn.Micro入门
- Response.Redirect导致session丢失的解决办法
- 当零售行业遇上小程序,该如何玩转全新商业模式
- 数据库IO性能知识整理