AcWing 870. 约数个数
原题链接
简单
作者:
噗呲噗呲
,
2020-04-07 20:25:46
,
所有人可见
,
阅读 493
hash实现约数的个数
#include <iostream>
#include <unordered_map>
using namespace std;
unordered_map<int, int> primes;
const int mod = 1e9 + 7;
void divide(int n){
for(int i = 2; i <= n / i; i ++){
if(n % i == 0){
while(n % i == 0){
n /= i;
primes[i] ++;
}
}
}
if(n > 1) primes[n] ++;
}
int main(){
int n;
cin >> n;
while(n--){
int x;
cin >> x;
divide(x);
}
long long res = 1;
for(unordered_map<int,int>::iterator it = primes.begin(); it != primes.end(); it++) res = res * (it -> second + 1) % mod;
cout << res << endl;
return 0;
}