871. 约数之和

Posted 幽殇默

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了871. 约数之和相关的知识,希望对你有一定的参考价值。

在这里插入图片描述

https://www.acwing.com/problem/content/description/873/

#include<cstdio>
#include<iostream>
#include<map>
using namespace std;
typedef long long int LL;
const int mod=1e9+7;
map<int,int> mp;
void f(int x)
{
	for(int i=2;i<=x/i;i++)
	{
		while(x%i==0) x/=i,mp[i]++;
	}
	if(x!=1) mp[x]++;
}
int main(void)
{
	int n; cin>>n;
	while(n--)
	{
		int x; cin>>x;
		f(x);
	}
	LL sum=1;
	for(map<int,int>::iterator it=mp.begin();it!=mp.end();it++)
	{
		int a=it->first,b=it->second;
		LL temp=1;
		for(int i=1;i<=b;i++)
		{
			temp=(temp*a+1)%mod;
		}
		sum=(sum*temp)%mod;
	}
	cout<<sum<<endl;
	return 0;
}

以上是关于871. 约数之和的主要内容,如果未能解决你的问题,请参考以下文章

AcWing 871. 约数之和(唯一分解定理+组合数)

约数(试除法求约数,约数之和,约数之差,欧几里得算法)

AcWing 869. 试除法求约数(枚举)

97. 约数之和

《算法竞赛进阶指南》0x32约数 余数之和

约数之和