码迷,mamicode.com
首页 > 其他好文 > 详细

教科书般的亵渎

时间:2019-05-28 21:11:03      阅读:119      评论:0      收藏:0      [点我收藏+]

标签:reg   using   turn   show   div   tar   ring   problem   def   

传送门:

#include <cstdio>
#include <cstring>
#include <cmath>
#include <cstdlib>
#include <algorithm>
#include <iostream>
using namespace std;
#define ll long long
#define re register
const int mod=1e9+7;
inline void read(ll &a)
{
    a=0;
    int d=1;
    char ch;
    while(ch=getchar(),ch>9||ch<0)
        if(ch==-)
            d=-1;
    a=ch^48;
    while(ch=getchar(),ch>=0&&ch<=9)
        a=(a<<3)+(a<<1)+(ch^48);
    a*=d;
}
ll f[55],a[55];
inline void init()
{
    f[0]=1;
    for(re int i=1;i<=54;i++)
        f[i]=1ll*f[i-1]*i%mod;
}
inline ll quickmod(ll x,int y)
{
    ll res=1;
    ll base=x%mod;
    while(y)
    {
        if(y&1)
            res=res*base%mod;
        base=base*base%mod;
        y>>=1;
    }
    return res;
}
inline ll solve(ll n,int m)
{
    ll ans=0;
    if(n<=m+2)
    {
        for(re int i=1;i<=n;i++)
            (ans+=quickmod(i,m))%=mod;
        return ans;
    }
    ll pos=1,base=0,t;
    for(re int i=1;i<=m+2;i++)
        (pos*=(n-i))%=mod;
    for(re int i=1;i<=m+2;i++)
    {
        (base+=quickmod(i,m))%=mod;
        t=pos*quickmod(n-i,mod-2)%mod;
        t=t*quickmod(f[m+2-i]*f[i-1],mod-2)%mod;
        if((m+2-i)&1)
            ans=((ans-base*t%mod)%mod+mod)%mod;
        else
            ans=(ans+base*t%mod)%mod;
    }
    return ans;
}
int main()
{
    init();
    int T;
    scanf("%d",&T);
    while(T--)
    {
        ll n;
        int m;
        read(n);
        scanf("%d",&m);
        for(re int i=1;i<=m;i++)
            read(a[i]);
        sort(a+1,a+1+m);
        ll ans=0;
        for(re int i=0;i<=m;i++)
        {
            (ans+=solve(n-a[i],m+1))%=mod;
            for(re int j=i+1;j<=m;j++)
                ans=((ans-quickmod(a[j]-a[i],m+1))%mod+mod)%mod;
        }
        printf("%lld\n",ans);
    }
    return 0;
}

 

教科书般的亵渎

标签:reg   using   turn   show   div   tar   ring   problem   def   

原文地址:https://www.cnblogs.com/acm1ruoji/p/10940230.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!