原题链接:蓝桥杯2022年第十三届省赛真题-求阶乘
解题思路:
只需要知道2和5可以组成一个零,并且2的数量总会比5多,所有只需要求解阶乘中质因数5的个数就可以求出阶乘中后导零的个数
所以问题变成了:求阶乘中某质因子个数:
只需将n循环整除所要求的质因子并将得数相加就行
private static long f(long n){ long ans = 0; while (n >= 5){ ans += n/5; n /= 5; } return ans; }
接着就是在1 ≤ K ≤ 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(); long start = 5; long end = 4000000000000000020L; while (start k){ end = mid - 1; }else if(temp < k){ start = mid + 1; }else { while (mid % 5 != 0){ mid --; } System.out.println(mid); return; } } System.out.println(-1); } private static long f(long n){ long ans = 0; while (n >= 5){ ans += n/5; n /= 5; } return ans; } }
0.0分
3 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复