跟求约数个数的模板很像,一样套公式:
模板
#include <iostream>
#include <algorithm>
#include <unordered_map>
#include <cmath>
using namespace std;
const int mod =1e9+7;
int main(){
int t;
cin >> t;
long long res = 1;
unordered_map<int, int> ps;
while(t--){
int a;
cin >> a;
for(int i = 2; i <= a/i; ++i){
while(a%i==0){
a /= i;
ps[i]++;
}
}
if(a > 1) ps[a]++;
}
for(auto p : ps){
long long sum = 1;
while(p.second--){
sum = (1 + sum * p.first)%mod;
}
res = res * sum % mod;
}
cout << res << endl;
return 0;
}
题目
题目 | 难度 |
---|---|
AcWing. 约数之和 | 模板题 |