算法AcWing 871. 约数之和

Posted karshey

tags:

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

算法思想:
在这里插入图片描述
注意别用pow,很慢。

#include<iostream>
#include<math.h>
#include<unordered_map>
#define LL long long int 
using namespace std;

const int MOD=1e9+7;

int main()
{
	int n;cin>>n;
	unordered_map<int,int>a;
	
	while(n--)
	{
		int x;cin>>x;
		
		for(int i=2;i<=x/i;i++)
		{
			while(x%i==0)
			{
				a[i]++;
				x/=i;
			}
		}
		
		if(x>1) a[x]++;
	}
	
	LL ans=1;
	for(auto i:a)
	{
		LL t=1;
		LL t1=i.first,t2=i.second;
		while(t2--) t=(t*t1+1)%MOD;
		ans=ans*t%MOD;
	}
	cout<<ans;
	return 0;
}

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

871. 约数之和

算法刷题AcWing 97. 约数之和——递推

《算法竞赛进阶指南》-AcWing-97. 约数之和 Sumdiv-题解

《算法竞赛进阶指南》-AcWing-97. 约数之和 Sumdiv-题解

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

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