10 point,求助
查看原帖
10 point,求助
1086575
HUTEHE楼主2024/5/18 11:06
#include"bits/stdc++.h"
#define int long long
#define mod 100000007
#define MAX 1000005
using namespace std;
int a[MAX],f[MAX];
int n,m;
int ans;
int t;
int j(int x,int y)
{
    ans=1;
    while(y)
    {
        if(y&1)
        {
            ans=ans*x%mod;
        }
        x=x*x%mod;
        y>>=1;
    }
    return ans;
}
int frac(int a)
{
    ans=1;
    while(a)
    {
        ans=ans*a&mod;
        a--;
    }
    return ans;
}
signed main()
{
    cin>>n>>m;
    a[0]=1;
    f[0]=1;
    t=j(2,n)-1;
    for(int i=1;i<=n;i++)
    {
        a[i]=a[i-1]*(t+1-i+mod)%mod;
    }
    for(int i=2;i<=m;i++)
    {
        f[i]=((a[i-1]-f[i-1]+mod)%mod-f[i-2]*(i-1)%mod*(t-i+2)%mod+mod)%mod;
    }
    int answer=f[m]*j(frac(m),100000005)%mod;
    cout<<answer;
    return 0;
}

样例过了? 但10分!\color{red}\text{10分!}

2024/5/18 11:06
加载中...