acwing \870. 约数个数
题目描述
给定 nn 个正整数 aiai,请你输出这些数的乘积的约数个数,答案对 109+7 取模。
输入格式
第一行包含整数 n。
接下来 n 行,每行包含一个整数 ai。
输出格式
输出一个整数,表示所给正整数的乘积的约数个数,答案需对 109+7取模。
数据范围
1≤n≤100
1≤ai≤2×109输入样例:
3 2 6 8
输出样例:
12
试除法求质因数
分析
代码
#include<iostream>
#include<unordered_map>
#include<cstdio>
using namespace std;
typedef long long ll; // 注意最后的结果要用long long类型
const int mod = 1e9 + 7;
int n;
unordered_map<int, int> h; // 统计每个质数在总的乘积中出现了几次
int main()
{
// cout << h[1] << " hhh " << endl;
scanf("%d", &n);
while(n --)
{
int a;
scanf("%d", &a);
for(int i = 2; i <= a/i; i++)
{
if(a % i == 0) // 找到一个因子(质因子)
{
int cnt = 0;
while(a % i == 0) // 循环除这个质因子
{
cnt++;
a /= i;
}
h[i] += cnt; // 统计所有质因数的个数
}
}
// 最后一个质因子
if(a > 1) h[a]++;
}
// for(auto t : h) printf("%d %d\n", t.first, t.second );
// return 0;
ll res = 1;
for(auto item : h) res = (res%mod * (item.second + 1)%mod) % mod;
printf("%d\n", res);
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
2021-02-25 牛客寒假训练第三场-G