提交时间:2025-10-03 13:47:38

运行 ID: 38321

#include<bits/stdc++.h> using namespace std; int n,a[200005]; long long ans=1; int 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)%M; return t*t%M; } int main(){ //freopen("sequence.in","r",stdin); //freopen("sequence.out","w",stdout); ji[0]=1; for(int i=1;i<200005;i++){ ji[i]=ji[i-1]*2; ji[i]%=M; } cin>>n; 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],(1<<(i-1))%(M-1)); ans%=M; ans*=dfs(a[i],(1<<(n-i))%(M-1)); ans%=M; } cout<<ans<<endl; //fclose(stdin); //fclose(stdout); return 0; }