unordered_map 是哈希表,按照键值对存储数据
下面分解质因数的代码应该熟练,分解完质因数后 记住两个公式 求约数个数或者约数和就简单了
C++ 代码
#include <iostream>
#include <algorithm>
#include <unordered_map>
using namespace std;
const int mod = 1e9+7;
typedef long long LL;
int main()
{
int n;cin>>n;
unordered_map<int,int> primes;
while(n--){
int x;cin>>x;
//对 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 prime:primes)
{
int p=prime.first,a=prime.second;
LL t=1;
while(a--) t=(t*p+1)%mod;
res=res*t%mod;
}
cout<<res<<"\n";
return 0;
}