hdu 4655 Cut Pieces

这个解题报告讲的很详细了!!!

代码如下:

 #include<iostream>
#include<stdio.h>
#include<algorithm>
#include<iomanip>
#include<cmath>
#include<cstring>
#include<vector>
#define ll __int64
#define pi acos(-1.0)
#define MAX 1000010
#define mod 1000000007
using namespace std;
int an[MAX];
ll s,ans,temp;
ll pows(ll a,ll b){
ll ans=;
while(b){
if(b&) ans=(ans*a)%mod;
b>>=;
a=(a*a)%mod;
}
return ans;
}
int main(){
int t,i,j,n;
cin>>t;
while(t--){
cin>>n;
s=;
for(i=;i<n;i++){
scanf("%d",&an[i]);
s*=an[i];
s%=mod;
}
sort(an,an+n);
j=n-;
ans=n*s%mod;
temp=;
for(i=n-;i>=;i--){
if(!j) break;
ll tt=s*pows(an[i],mod-)%mod;
temp=(tt+temp)%mod;
j--;
if(!j) break;
temp=(tt+temp)%mod;
j--;
if(!j) break;
}
printf("%I64d\n",((ans-temp)%mod+mod)%mod);
}
return ;
}
上一篇:两款主流项目管理软件PK,哪个更好用?


下一篇:EBS预置文件作用收集整理