首页 > 其他 > 详细

题目:集合统计(水题)

时间:2019-11-14 21:14:06      阅读:91      评论:0      收藏:0      [点我收藏+]

题目

传送门

题目

与其直接求答案
不如直接算当前的数作为最大值的贡献,与这个数作为最小值的贡献

代码

#include<iostream>
#include<algorithm>
using namespace std;
#define int long long
const int mod=1e9+7;
int n;
int a[1000005];
long long ans;
long long qkpow(int a,int b)
{
    if(b==0)
        return 1;
    if(b==1)
        return a;
    int t=qkpow(a,b/2);
    t=(t*t)%mod;
    if(b%2==1)
        t=(t*a)%mod;
    return t;
}
signed main()
{
    ios::sync_with_stdio(false);
    //freopen("d.in","r",stdin);
    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=(((ans+a[i]*qkpow(2,i-1)%mod)%mod-a[i]*qkpow(2,n-i)%mod)%mod+mod)%mod;
    }
    cout<<ans;
    return 0;
}

题目:集合统计(水题)

原文:https://www.cnblogs.com/loney-s/p/11861938.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!