比赛 20241129 评测结果 AAAAAAAAAA
题目名称 平方 最终得分 100
用户昵称 wdsjl 运行时间 0.798 s
代码语言 C++ 内存使用 4.97 MiB
提交时间 2024-11-29 11:40:26
显示代码纯文本
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N=1000010;
const int mod=1000000007;

ll ans=1;

int x; 
int n,cnt[N];

ll kuai(ll a,ll p){
    ll base=1;
    while(p){
        if(p&1) base=base*a%mod;
        a=a*a%mod;
        p>>=1;
    }
    return base%mod;
}
int main(){
    freopen("pingfang.in","r",stdin);
    freopen("pingfang.out","w",stdout);
    scanf("%d",&n);
    for(int i = 1;i<=n;i++){
		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) cnt[j]++;
        }
        if(m!=1) cnt[m]++;
    }
    for(int i = 2;i<=1e6+1;i++){
   		if(cnt[i]){
        	ans=ans*kuai(i,min(cnt[i],n-cnt[i]))%mod;
    	}
	}
    printf("%lld",ans);
    return 0;
}