约数个数
题目描述
给定n个正整数ai,请你输出这些数的乘积的约数个数,答案对 1 0 9 + 7 10^9+7 109+7取模。
输入格式
第一行包含整数n。
接下来n行,每行包含一个整数ai。
输出格式
输出一个整数,表示所给正整数的乘积的约数个数,答案需对 1 0 9 + 7 10^9+7 109+7取模。
数据范围
1 ≤ n ≤ 100 , 1≤n≤100, 1≤n≤100,
1 ≤ a i ≤ 2 ∗ 1 0 9 1≤ai≤2∗10^9 1≤ai≤2∗109
输入样例:
3
2
6
8
输出样例:
12
Solution
import java.util.*;
class Main{
static final int MOD =1000000007;
static Map<Integer, Integer> map = new HashMap<>();
public static void prime(int a){
for(int i = 2; i <= a / i; i++){
while(a % i == 0){
a /= i;
map.put(i, map.getOrDefault(i, 0) + 1);
}
}
if(a > 1) map.put(a, map.getOrDefault(a, 0) + 1);
}
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
for(int i = 0; i < n; i++){
int a = sc.nextInt();
prime(a);
}
long res = 1;
for (int key : map.keySet()){
res = res * (map.get(key) + 1) % MOD;
}
System.out.println(res);
}
}