侧边栏壁纸
博主头像
GabrielxD

列車は必ず次の駅へ。では舞台は?私たちは?

  • 累计撰写 674 篇文章
  • 累计创建 128 个标签
  • 累计收到 20 条评论

目 录CONTENT

文章目录

【数学】阶乘约数【蓝桥杯】

GabrielxD
2022-12-26 / 0 评论 / 0 点赞 / 110 阅读 / 255 字
温馨提示:
本文最后更新于 2022-12-27,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

题目

阶乘约数 - 蓝桥云课


本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。

定义阶乘 n!=1×2×3××nn! = 1 \times 2 \times 3 \times \cdots \times n

请问 100!100!100100 的阶乘)有多少个正约数。

运行限制

  • 最大运行时间:1s
  • 最大运行内存: 128M

解题

方法一:约数个数

思路

求多个数相乘的约数个数,详见:【数学】约数个数

代码

import java.util.*;
import java.io.*;

public class Main {
    static final int MOD = (int) 1e9 + 7;
    static Map<Integer, Integer> mp = new HashMap<>();
    
    static void pf(int n) {
        for (int i = 2; i <= n / i; ++i) {
            if (n % i == 0) {
                int s = 0;
                while (n % i == 0) {
                    n /= i;
                    ++s;
                }
                mp.put(i, mp.getOrDefault(i, 0) + s);
            }
        }
        if (n > 1) mp.put(n, mp.getOrDefault(n, 0) + 1);
    }
    
    public static void main(String[] args) throws IOException {
        for (int i = 1; i <= 100; ++i) pf(i);
        long cnt = 1;
        for (int v : mp.values()) cnt *= v + 1;
        System.out.println(cnt);
    }
}
0

评论区