2652 阶乘0的数量 V2
时间:2020-05-12
本文章向大家介绍2652 阶乘0的数量 V2,主要包括2652 阶乘0的数量 V2使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
原题
题目描述
给出一个数k,求最小的n,使得n的阶乘后面0的数量>=k。
例如k=1,
5的阶乘 = 1*2*3*4*5 = 120,120后面有1个0。并且4的阶乘后面没有0,所以5是最小的结果。
输入
一个数k(1 <= k <= 10^9)
输出
输出最小的满足条件的n。
输入样例 1 输出样例 5
题解
又是一道二分答案题。
这次直接干V2版本。(V1版通用)
先在前面说一下,这道题需要使用long long,否则会WA掉几个值
这道题最先考虑的是如何判断它末尾有几个0。
没错,又是找规律
末尾0的构成要有2和5这两个数
例如:
10=2*5
100=4*5*5
……
因为2的倍数比5的倍数多得多
所以,我们只需要考虑5的倍数有几个就可以知道末尾有几个0。
(注意25这一类数,等于5*5,算是两个5的倍数)
规律找出来了。
然后是二分
我们可以将5的倍数进行二分,也就是最后的答案。
如果这个二分的答案满足k,就把二分的值调小
如果这个二分的答案不满足k,就把这个值调大
bingo,问题解决!
先来看看check函数的代码
1 bool check(long long x){ 2 long long p=x,num=0; 3 while(p!=0) 4 { 5 p/=5; 6 num+=p; 7 } 8 if(num>=k) 9 return 1; 10 else 11 return 0; 12 }
下面是整个题目的代码
1 #include<iostream> 2 #include<cstdio> 3 #include<cmath> 4 #include<cstring> 5 #include<algorithm> 6 #define inf 100000000 7 using namespace std; 8 long long k; 9 bool check(long long x){ 10 long long p=x,num=0; 11 while(p!=0) 12 { 13 p/=5; 14 num+=p; 15 } 16 if(num>=k) 17 return 1; 18 else 19 return 0; 20 } 21 int main() 22 { 23 cin>>k; 24 long long l,r,m; 25 l=0;r=1e12+1; 26 while(l<r-1) 27 { 28 m=(l+r)/2; 29 if(check(m)) 30 r=m; 31 else 32 l=m; 33 } 34 cout<<r; 35 return 0; 36 }
原文地址:https://www.cnblogs.com/laoguantongxiegogo/p/12877579.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法