提交时间:2025-10-03 14:25:39

运行 ID: 38346

#include<bits/stdc++.h> using namespace std; int n,a[200005]; long long ans=1; long long ji[200005]; int dis[200005][20]; long long M=1e9+7; int dfs(int x,int a){ if(a==1){ return x; }if(!a) return 1; long long t=dfs(x,a/2); if(a%2) t*=x; return (t*t)%M; } int main(){ cin>>n; ji[0]=1; for(int i=1;i<=n;i++){ ji[i]=ji[i-1]*2; ji[i]%=(M-1); } for(int i=1;i<=n;i++){ cin>>a[i]; } sort(a+1,a+n+1); for(int i=1;i<=n;i++){ ans*=dfs(a[i],ji[i-1]); ans%=M; ans*=dfs(a[i],ji[n-i]); ans%=M; } cout<<ans<<endl; return 0; }