假设整数 $n = p_1^{\alpha_1} \times p_2^{\alpha_2} \times p_3^{\alpha_3} \times …p_k^{\alpha_k} $
那么 $n$ 的任何一个约数 $div = p_1^{\beta_1} \times p_2^{\beta_2} \times p_3^{\beta_3} \times …p_k^{\beta_k} \quad s.t. \quad 0 \le \beta_i \le \alpha_i$
而所有的 $\beta_i$ 都是从 0 ~ $\alpha_i$ 中选一个,共有 $\alpha_i + 1$ 中选法
因此整数 $n$ 的约数个数 $res = \sum_{i = 1}^k (\alpha_i + 1) $
#include <iostream>
#include <unordered_map>
using namespace std;
const int P = 1e9 + 7;
typedef long long LL;
unordered_map<int, int> primes; // 质约数值,个数
int main()
{
int k;
cin >> k;
while (k --)
{
int n;
cin >> n;
for (int x = 2; x <= n / x; x ++)
if (n % x == 0)
while (n % x == 0)
{
primes[x] ++;
n /= x;
}
if (n > 1) primes[n] ++;
}
LL res = 1;
for (auto p : primes) res = res * (p.second + 1) % P;
cout << res << endl;
return 0;
}