当前位置: 首页 > news >正文

蓝桥杯-求阶乘

问题描述
满足 N!的末尾恰好有 区 个o的最小的 N 是多少?
如果这样的 N 不存在输出 -1。
输入格式
一个整数 区。
输出格式
一个整数代表答案。
样例输入
样例输出
10
评测用例规模与约定
对于 30% 的数据,1<K<106
对于 100% 的数据,1<K<1018
运行限制
最大运行时间:3s最大运行内存:512M
解题思路:计算阶乘末尾有多少个0,可以找到一定的规律,

数值末尾多少0
102
204
306
10024
20049

可以看到末尾有多少0与5的倍数有关。

计算100末尾有多少0:

100/5=20

20/5=4

20+4=4

计算200末尾有多少0:

200/5=40

40/5=8

8/5=1

40+8+1=49

所以计算阶乘末尾有多少0可以用:

int count=0;
while(n>0)
{n=n/5;count+=n;}
return count;

来实现。

求阶乘这道算法题的思路为,根据给出的用例范围,进行二分查找,代入上述方法里。

其中9e18代表9*10的18次方

import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);long k = sc.nextLong();//末位0的个数long l = 1;long r = (long)9e18;while (l < r) {//找符合条件的最小值long mid =(l+r)/2;if (getF(mid) >= k) {r = mid;} else {l = mid + 1;}}if (getF(r) == k) {System.out.println(r);} else {System.out.println(-1);}}public static long getF(long num) {long ans = 0;while (num > 0) {ans += num / 5;num /= 5;}return ans;}
}

http://www.lryc.cn/news/336835.html

相关文章:

  • 计算两个日期之间相差的天数的四种方法
  • 【leetcode面试经典150题】42. 有效的字母异位词(C++)
  • Windows 2003 R2与Windows 2022建立域信任报错:本地安全机构无法跟域控制器获得RPC连接。请检查名称是否可以解析,服务器是否可用。
  • UE5、CesiumForUnreal实现加载建筑轮廓GeoJson数据生成白模功能
  • JavaGUI编程
  • Nginx 基础应用实战 03 基于反向代理的负载均衡、https配置
  • [图解]DDD领域驱动设计伪创新-聚合根02
  • 《QT实用小工具·二十》存款/贷款计算器
  • hbase基础shell用法
  • ElasticSearch 的 BoolQueryBuilder 使用
  • [C++/Linux] 网络I/O处理
  • HarmonyOS4 页面路由
  • ShardingSphere再回首
  • 第七篇:3.6 其他评估考虑/4.审计指南/5. 通用报告规范/6.披露指南、参考标准及其他 - IAB/MRC及《增强现实广告效果测量指南1.0》
  • 函数、指针和数组的相互运用(C语言)
  • .Net Core/.Net 6/.Net 8,一个简易的消息队列
  • OpenHarmony4.0分布式任务调度浅析
  • element-ui backtop 组件源码分享
  • MongoDB快照(LVM)业务场景应用实战
  • 3D开发工具HOOPS:推动汽车行业CAD可视化发展
  • Centos安装MySQL提示公钥尚未安装
  • FebHost:英国.UK域名简介
  • SQL Serve---查询
  • RabbitMQ3.13.x之十一_RabbitMQ中修改用户密码及角色tags
  • Taro打包生成不同目录
  • 2024-04-08 NO.5 Quest3 手势追踪进行 UI 交互
  • PaddleDetection 项目使用说明
  • leetcode解题思路分析(一百五十五)1352 - 1358 题
  • 如何将普通maven项目转为maven-web项目
  • LeetCode 226. 翻转二叉树