提交时间:2025-10-03 14:04:32
运行 ID: 38332
#include<bits/stdc++.h> using namespace std; typedef long long ll; ll n; ll a[200005]; ll mod=1e9+7; ll phim=mod-1; ll qpow(ll a,ll b,ll mod){ if(b==1)return a%mod; if(b==0)return 1; if(b&1)return a*qpow(a*a%mod,b>>1,mod)%mod; return qpow(a*a%mod,b>>1,mod)%mod; } int main(){ scanf("%lld",&n); for(int i = 1;i<=n;i++) scanf("%lld",&a[i]); sort(a+1,a+n+1); ll ans =1; for(int i = 1;i<=n;i++){ ll k = qpow(2,i-1,phim); ans *= qpow(a[i],k,mod); ans%=mod; } for(int i = 1;i<=n;i++){ ll k = qpow(2,n-i,phim); ans *= qpow(a[i],k,mod); ans%=mod; } cout<<ans<<endl; }