| Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
|---|---|---|---|---|---|---|---|---|---|
| 38332 | 郭澍宇 | 【S】T3 | C++ | 通过 | 100 | 300 MS | 1820 KB | 690 | 2025-10-03 14:04:32 |
#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; }