AcWing 870. 约数个数:奶酪宝宝来啦!
原题链接
简单
作者:
奶酪宝宝
,
2025-03-26 14:24:52
·山东
,
所有人可见
,
阅读 1
#include <iostream>
#include <algorithm>
#include <unordered_map>
#define NO_REMAINDER 0
using namespace std;
const int mod = 1e9 + 7;
unordered_map<int, int> primeToCount;
int numberToCalculate;
int numberCount;
void declaration(){
scanf("%d", &numberCount);
}
void inputSingleNumber(){
scanf("%d", &numberToCalculate);
}
void eachNumberPrimeCount(int numberToCalculate){
for(int primeCandidate = 2; primeCandidate <= numberToCalculate / primeCandidate; primeCandidate ++){
while(numberToCalculate % primeCandidate == NO_REMAINDER){
primeToCount[primeCandidate] ++;
numberToCalculate /= primeCandidate;
}
}
if(numberToCalculate > 1) primeToCount[numberToCalculate] ++;
}
void calculationIterate(){
while(numberCount --){
inputSingleNumber();
eachNumberPrimeCount(numberToCalculate);
}
}
long long totalPrimeCount = 1;
void outputSolution(){
for(auto prime : primeToCount){
totalPrimeCount = totalPrimeCount * (prime.second + 1) % mod;
}
printf("%d", totalPrimeCount);
}
int main(){
declaration();
calculationIterate();
outputSolution();
return 0;
}