约数个数
#include<iostream>
#include<unordered_map>
const int MOD=1e9+7;
using namespace std;
int n;
int main(){
unordered_map<int,int>mp;
cin>>n;
while(n--){
int x;
cin>>x;
for(int i=2;i<=x/i;i++){
while(x%i==0){
x/=i;
mp[i]++;
}
}
if(x>1)mp[x]++;
}
long long ans=1;
for(auto [x,y]:mp){
ans=ans*(y+1)%MOD;
}
cout<<ans<<endl;
return 0;
}
###约数之和
#include<iostream>
#include<unordered_map>
const int MOD=1e9+7;
using namespace std;
int n;
unordered_map<int,int> mp;
long long ans=1;
int main(){
cin>>n;
while(n--){
int x;
cin>>x;
for(int i=2;i<=x/i;i++){
while(x%i==0){
x/=i;
mp[i]++;
}
}
if(x>1)mp[x]++;
}
for(auto [k,v]:mp){
long long t=1;
while(v--)t=(t*k+1)%MOD;
ans=ans*t%MOD;
}
cout<<ans<<endl;
return 0;
}