0
点赞
收藏
分享

微信扫一扫

【十三届蓝桥杯真题】求阶乘 --- 数学解法思考与尝试

米小格儿 2022-04-13 阅读 31

🛸目录


🚀题目描述

image-20220409155817374

🚀代码(仅供参考)

因为蓝桥杯系统该题的调试还没有上线,因此该代码仅供参考!

import java.util.Scanner;

public class Main {
    static boolean judge(long k, long M, int n) {
        long m = 5;
        while (n >= 1) {
            k -= (M / m);
            --n;
            m *= 5;
        }
        return k == 0;
    }
    static double[] nums = new double[30];
    public static void main(String[] args) {
        Scanner cin = new Scanner(System.in);
        long k = cin.nextLong();
        for (int i = 1; i < 30; ++i) {
            nums[i] = (4 * k) / (1 - Math.pow(0.2, i * 1.0));
        }
        for (int i = 1; i < 30; ++i) {
            double cur = Math.pow(5, i);
            double tCur = Math.pow(5, i + 1);
            if (nums[i] >= cur && nums[i]*1.0 < tCur) {
                long lI = (long) (nums[i]);
                int mod = (int) (lI % 5);
                if (lI != nums[i]) {
                    lI += 5;
                }
                lI -= mod;
                if (judge(k, lI, i)) {
                    System.out.println(lI);
                    return;
                }
            }
        }
        System.out.println(-1);
    }
}

🧡写在最后

img

举报

相关推荐

0 条评论