题目
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
定义阶乘 。
请问 ( 的阶乘)有多少个正约数。
运行限制
- 最大运行时间: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);
}
}
评论区