AcWing 870. 约数个数(唯一分解+组合数)
Posted MangataTS
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AcWing 870. 约数个数(唯一分解+组合数)相关的知识,希望对你有一定的参考价值。
题目链接
https://www.acwing.com/problem/content/872/
思路
我们将每一个数进行一个唯一分解后,对于每一个质因子我们统计一下数量,假设我们已经记录到了每一个质因子的数量 v i s [ x ] vis[x] vis[x]那么我们选择的情况就是从 0 0 0到 v i s [ x ] vis[x] vis[x]也就是 v i s [ x ] + 1 vis[x]+1 vis[x]+1的选择方法,我们将所有的方法数乘起来
代码
#include <bits/stdc++.h>
using namespace std;
#define mod 1000000007
map<int,int> vis;
int n,a;
void slove()
for(int i = 2;i * i <= a; ++i)
while(a % i == 0) vis[i]++,a /= i;
if(a-1) vis[a]++;
int main()
scanf("%d",&n);
for(int i = 1;i <= n; ++i)
scanf("%d",&a);
slove();
long long ans = 1LL;
for(auto it : vis) ans = (ans * (it.second + 1)) % mod;
printf("%lld\\n",ans);
return 0;
以上是关于AcWing 870. 约数个数(唯一分解+组合数)的主要内容,如果未能解决你的问题,请参考以下文章