tjut 4655

来源:互联网 发布:鑫众棋牌源码 编辑:程序博客网 时间:2024/06/08 04:45
#include <cstdio>  #include <iostream>  #include <cmath>  #include <cstring>  #include <algorithm>  #include <vector>  using namespace std;  #define maxn 1000010  typedef __int64 LL;  vector<LL>v;  const LL mod = 1e9+7;  LL num[maxn];    LL Pow(LL a,LL b)  {      LL ans=1;      while(b)      {          if(b&1)          {              b--;              ans=(ans*a)%mod;          }          else          {              b/=2;              a=(a*a)%mod;          }      }      return ans;  }  int main()  {      int t;      scanf("%d",&t);      while(t--)      {          v.clear();          int n;          scanf("%d",&n);          LL S=1;          for(int i=1;i<=n;i++)          {              scanf("%I64d",&num[i]);              S=(S*num[i])%mod;          }          sort(num+1,num+n+1);          int l=1,r=n;          while(l<=r)          {              if(l==r)                  v.push_back(num[l]);              else              {                  v.push_back(num[l]);                  v.push_back(num[r]);              }              l++;              r--;          }          LL ans=0;          for(int i=0;i<n-1;i++)          {              //cout<<"v["<<i<<"]="<<v[i]<<endl;              ans+=S*Pow(max(v[i],v[i+1]),mod-2);              ans%=mod;          }          ans=S*n-ans;          ans=(ans%mod+mod)%mod;          printf("%I64d\n",ans);      }      return 0;  }  

0 0
原创粉丝点击