比赛 20241129 评测结果 AAAAAAAAAA
题目名称 平方 最终得分 100
用户昵称 徐诗畅 运行时间 0.773 s
代码语言 C++ 内存使用 4.96 MiB
提交时间 2024-11-29 09:27:31
显示代码纯文本
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N=1e6+5,mod=1e9+7;
ll ans=1;
int n,num[N];
ll qpow(ll a,ll b){
	ll res=1;
	while(b){
		if(b&1) res=res*a%mod;
		a=a*a%mod;
		b>>=1;
	}
	return res%mod;
}
int main(){
	freopen("pingfang.in","r",stdin);
	freopen("pingfang.out","w",stdout);
	scanf("%d",&n);
	for(int i = 1;i<=n;i++){
		int x; scanf("%d",&x);
	    int m = x;
	    for(int j = 2;j*j<=x;j++){
	    	int tot=0;
	    	while(m%j==0){
	        	m/=j;
	        	tot++;
	    	}
	    	if(tot%2==1) num[j]++;
		}
		if(m!=1) num[m]++;
	}
	for(int i = 2;i<=1e6+1;i++)
	if(num[i]){ //cout<<i<<" "<<num[i]<<endl;
		ans=ans*qpow(i,min(num[i],n-num[i]))%mod;
	}
	printf("%lld",ans);
	return 0;
}