比赛 20241129 评测结果 AAAAAAAAAA
题目名称 平方 最终得分 100
用户昵称 小金 运行时间 0.700 s
代码语言 C++ 内存使用 6.44 MiB
提交时间 2024-11-29 11:11:47
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
const long long mod=1e9+7;
int n;
long long a[100010],v[1000010],b[1000010],m,ans=1;
long long power(long long x,int y)
{
	long long s=1%mod;
	for(;y;y>>=1)
	{
		if(y&1) s=s*x%mod;
		x=x*x%mod;
	}
	return s;
}
void divide(long long x)
{
	for(int i=2;i<=sqrt(x);i++)
	{
		if(x%i==0)
		{
			int s=0;
			while(x%i==0)
			{
				x/=i;
				s++;
			}
			if(s&1) b[i]++;
		}
	}
	if(x>1) b[x]++;
}
int main()
{
	freopen("pingfang.in","r",stdin);
	freopen("pingfang.out","w",stdout);
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
	{
		scanf("%lld",&a[i]);
		m=max(m,a[i]);
	}
	for(int i=1;i<=n;i++)
	{
		divide(a[i]);
	}
	for(int i=1;i<=m;i++)
	{
		if(b[i]) ans=(ans*(power(i,min(b[i],n-b[i]))%mod))%mod;
	}
	printf("%lld",ans);
	return 0; 
}