题目描述
blablabla
样例
blablabla
求约数的和
要用到一个数学公式
a^0 + a^1 + a^2 + … + a^n;
有一个递推公式
int temp = 1;
while(n--){
temp = temp * a + 1;
}
C++ 代码
#include <iostream>
#include <cstring>
#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 iter : primes) {
int a = iter.first,b = iter.second;
LL temp = 1;
for(int i = 0;i < b;++i){
temp = (temp * a + 1) % mod;
}
res = (res * temp) % mod;
}
cout << res <<endl;
return 0;
}