题目
给定 n 个正整数 ai,请你输出这些数的乘积的约数个数,答案对 10^9+7 取模。
输入格式
第一行包含整数 n 。
接下来 n 行,每行包含一个整数 ai。
输出格式
输出一个整数,表示所给正整数的乘积的约数个数,答案需对 109+7109+7 取模。
数据范围
1≤n≤100,
1≤ai≤2×10^9
输入样例:
3
2
6
8
输出样例:
12
解
以上题解助理解,转自AcWing 海绵宝宝
以下为实现代码
#include<bits/stdc++.h>
using namespace std;
const int mod = 1e9 + 7;
typedef long long LL;
int main(){
int n;
unordered_map<int, int> pri; //哈希表,存质因数及其指数
cin >> n;
while(n--){
int x;
cin >> x;
for(int i = 2; i <= x / i; i++){
while(x % i == 0)pri[i]++, x /= i; //求质因数指数
}
if(x > 1)pri[x]++; //求质因数指数(特殊处理)
}
LL res = 1;
for(auto p : pri)res = res * (p.second + 1) % mod;//按照约数个数公式计算
cout << res;
return 0;
}