把一个数N 写成:
N = (p1^x1^)(p^x2)(p3^x3)…(pk^xk),其中pi为质数。
使用乘法分配律后则N的约数个数为:(x1+1)(x2+1)(x3+1)…(xk+1)
long long res = 1;
for(auto iter = h.begin(); iter != h.end(); iter++)
{
//res = (x1+1)(x2+1)(x3+1)…(xk+1)
res = res * (iter->second + 1) % mod ;
}
#include<iostream>
#include<map>
using namespace std;
const int mod=1e9+7;
typedef long long ll;
int n;
map<int,int>primes;
void f(int x)
{
for(int i=2;i*i<=x;i++)
{
while(x%i==0)
{
primes[i]++;
x/=i;
}
}
if(x>1) primes[x]++;
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
int x;
cin>>x;
f(x);
}
ll ans=1;
for(auto t:primes)
{
int p=t.first,a=t.second;
ll tmp=1;
while(a--) tmp=(tmp*p+1)%mod;
ans=(ans*tmp)%mod;
}
cout<<ans;
return 0;
}