给定n个正整数aiai,请你输出这些数的乘积的约数之和,答案对109+7109+7取模。
输入格式
第一行包含整数n。
接下来n行,每行包含一个整数aiai。
输出格式
输出一个整数,表示所给正整数的乘积的约数之和,答案需对109+7109+7取模。
数据范围
1≤n≤1001≤n≤100,
1≤ai≤2∗1091≤ai≤2∗109
输入样例:
3
2
6
8
输出样例:
252
#include <bits/stdc++.h> using namespace std; typedef long long ll; const int mod = 1e9+7; int T,x; map<ll,ll> mp; void fun(int x){ //计算质因数的个数 for(int i =2;i<=x/i;i++){
while(x%i == 0) x/=i,mp[i]++; } if(x>1) mp[x]++; } ll ksm(ll a,ll b){ //快速幂 ll res = 1; while(b){ if(b&1) res = res*a%mod; a = a*a%mod; b>>=1; } return res; } int main(){ cin>>T; while(T--){ cin>>x; fun(x); } ll res = 1; for(auto m: mp){ //基于二项式定义 ll cur = 0; for(int i = 0;i<=m.second;i++){ cur = (cur+ksm(m.first,i))%mod; } res = res*cur%mod; } cout<<res<<endl; return 0; }