提交时间:2025-10-03 13:58:35

运行 ID: 38325

#include<bits/stdc++.h> using namespace std; long long n,a[2000005],ans=1; long long md=1e9+7; inline long long qw(long long d,long long z,long long md){ if(z==0)return 1; if(z%2==1){ long long _=qw(d,z/2,md); _%=(md-1); _=_*_; _%=(md-1); _=_*d; _%=(md-1); return _; } else{ long long _=qw(d,z/2,md); _%=(md-1); _=_*_; _%=(md-1); return _; } } int main(){ scanf("%lld",&n); for(int i=1;i<=n;i++){ scanf("%lld",&a[i]); } sort(a+1,a+n+1); for(int i=1;i<=n;i++){ a[i]=a[i]%md; long long __=qw(2,n-i,md-1); long long _=qw(a[i],__,md); _=_%md; ans=ans*(long long)(_); ans%=md; } for(int i=1;i<=n;i++){ long long __=qw(2,i-1,md-1); __%=md; long long _=qw(a[i],__,md); _=_%md; ans*=(long long)(_); ans%=md; } printf("%lld",ans); }