AcWing 871. 约数之和
原题链接
简单
作者:
吴鑫
,
2021-02-15 16:23:30
,
所有人可见
,
阅读 281
#include<iostream>
#include<algorithm>
#include<unordered_map>
using namespace std;
typedef long long ll;
unordered_map<int,int> prime;
const int mod=1e9+7;
int n;
int qmi(int a,int b,int p){
int res=1;
for(;b;b>>=1){
if(b&1) res=(ll)res*a%p;
a=(ll) a*a%p;
}
return res;
}
int main(){
cin>>n;
while(n--){
int x;
scanf("%d",&x);
for(int i=2;i<=x/i;i++){
while(x%i==0){
x/=i;
prime[i]++;
}
}
if(x>1) prime[x]++;
}
ll res=1;
for(auto i:prime){
int x=i.first,y=i.second;
res=(ll)res*(qmi(x,y+1,mod)-1)%mod*qmi(x-1,mod-2,mod)%mod;
}
cout<<res;
return 0;
}