871. 约数之和
题意:
给你n个数相乘,求它的约数之和。
- 先 质因数分解,之后用乘法原理。
AC
# include <bits/stdc++.h>
using namespace std;
int main(){
unordered_map<int,int> ma;
int tt, n; cin>>tt;
while(tt--){
cin>>n;
for(int i = 2; i <= n/i; i ++ ){
if(n%i == 0){
while(n%i == 0){
n /= i;
ma[i]++;
}
}
}
if(n>1) ma[n]++;
}
long long ans = 1;
long long mod = 1e9+7;
for(auto x: ma){
long long p = x.first;
long long a = x.second, res = 1;
while(a--)res = (res*p+1)%mod;
ans = ans*res%mod;
}
cout<<ans<<endl;
return 0;
}