解题思路:
只需要知道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语言程序设计教程(第三版)课后习题7.1 (C语言代码)浏览:761 |
分糖果 (C++代码)浏览:1537 |
Pascal三角 (C语言代码)浏览:1252 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:1015 |
C语言训练-数字母 (C语言代码)浏览:670 |
C语言程序设计教程(第三版)课后习题10.3 (C语言代码)浏览:565 |
IP判断 (C语言代码)浏览:820 |
C语言程序设计教程(第三版)课后习题10.1 (C语言代码)浏览:585 |
C语言程序设计教程(第三版)课后习题5.5 (C语言代码)浏览:582 |
星期判断机 (C语言代码)浏览:892 |