算法基础课

给定 nn 个正整数 aiai,请你输出这些数的乘积的约数之和,答案对 109+7109+7 取模。

1|0输入格式

第一行包含整数 nn。

接下来 nn 行,每行包含一个整数 aiai。

2|0输出格式

输出一个整数,表示所给正整数的乘积的约数之和,答案需对 109+7109+7 取模。

3|0数据范围

1≤n≤1001≤n≤100,
1≤ai≤2×1091≤ai≤2×109

4|0输入样例:

3 2 6 8

5|0输出样例:

252

核心思路:这一题其实和约数的个数是有一定的关联的,本质也是一样的,先分解质因数:a=p1k1p2k2pnkn,然后我们会发现把p1k1的幂数给拆开,也就是(1+p1+p12+p1k1),我们发现再把他们分别拆开再相乘就是我们所要的,为什么呢,因为这个些式子里面的因子相乘肯定也是约数。比如12=223,所以::(1+2+22)(3+1).所以我们总的式子也就是i=1n(1+pi+pi2++piki).

下面是代码

#include<bits/stdc++.h> typedef long long ll; using namespace std; const int mod = 1e9 + 7; map<int, int> p; int main() { int n,i; cin >> n; ll res=1; ll t; while (n--)//这一段就是分解质因数的老套路 { int x; cin >> x; for (i = 2;i <= x / i;i++) { while (x % i == 0) { x /= i; p[i]++; } } if (x > 1) p[x]++; } // for (auto s : p)//这个我们可以看下6的质因子就理解了 // cout << s.first<<" "<< s.second << endl; for (auto prime : p) { t = 1; ll a = prime.first; ll b = prime.second; while(b--) { t = (t * a + 1) % mod;//这个我们自己推两组数据就可以得到这个递推式 } res = res * t % mod; } cout << res; } 更新一个新的思路,一定要注意需要自己手写快速幂,不要使用pow因为这会导致直接爆 `#include<bits/stdc++.h> #include<unordered_map> using namespace std; typedef long long LL; const int N = 1e6 + 10; int st[N], primes[N],sum[N]; int cnt; int mod = 1e9 + 7; unordered_map<LL, LL> mp; LL qmi(LL a,LL b) { LL res=1; while(b) { if(b&1) res=res*a%mod; b>>=1; a=a*a%mod; } return res; } LL po(LL a, LL i) { LL ans = 1; for (LL j = 1;j <= i;j++) { ans *= a; } return ans; } int main() { int n; cin >> n; LL res = 1; LL t; while (n--) { LL x; cin >> x; for (LL i = 2;i <= x / i;i++) { while (x % i == 0) { mp[i]++; x /= i; } } if (x > 1) mp[x]++; } for (auto p : mp) { t = 1; LL a = p.first; LL b = p.second; for (int i = 1;i <= b;i++) { t = (t +qmi(a,i))%mod; } res = res * t % mod; } cout << (res%mod+mod)%mod << endl; }`

__EOF__

本文作者肖英豪
本文链接https://www.cnblogs.com/xyh-hnust666/p/16962817.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   努力的德华  阅读(25)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示