$(p_{1}^{0}+p_{1}^{1}+…+p_{1}^{\alpha_{1}}) \\\\…\\\\(p_{k}^{0}+p_{1}^{1}+…+p_{k}^{\alpha_{k}})$
每个约数形式:$p_{1}^{\beta_{1}}…p_{k}^{\beta_{k}}$
约数之和:
$$
\sum_{i,j…} p_{i}^{\alpha_{i}} p_{j}^{\alpha_{j}}…\\\\
=
(p_{1}^{0}+p_{1}^{1}+…+p_{1}^{\alpha_{1}})\times…\times(p_{k}^{0}+p_{1}^{1}+…+p_{k}^{\alpha_{k}})
$$
#include<iostream>
#include<algorithm>
#include<unordered_map>
using namespace std;
typedef long long LL;
const int mod = 1e9+7;
int main()
{
int n;
cin >> n;
unordered_map<int,int> primes;
while(n--)
{
int x;
cin >> x;
for(int i=2;i<=x/i;i++)
{
while(x%i==0)
{
x/=i;
primes[i]++;
}
}
if(x>1)primes[x]++;
}
LL res = 1;
for(auto p:primes)
{
LL a = p.first,b = p.second;
LL misum = 1;
while(b--)misum = (misum*a+1)%mod;//迭代幂次和 就不用求幂的
res = res*misum%mod;
}
cout << res << endl;
return 0;
}