题目描述
给定n个正整数ai,请你输出这些数的乘积的约数之和,答案对1e9+7取模
输入样例:
3
2
6
8
输出样例:
252
算法
(质因数分解+公式)
C++ 代码
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<unordered_map>
using namespace std;
typedef long long LL;
const int mod=1e9+7;
int main(){
int n;
cin>>n;
unordered_map<int,int> primes;
while(n--){
int x;
cin>>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;//p为底数,a为指数
LL t=1;
while(a--) t=(t*p+1)%mod;//先求出公式中的每个括号内的值
res=res*t%mod;//把每个括号的值相乘
}
cout<<res<<endl;
return 0;
}