1 条题解

  • 0
    @ 2022-11-24 10:31:38

    水。

    #include<cstdio>
    typedef long long ll;
    const int mod=100000007;
    const int maxn=1000005;
    int n,m,invm,a[maxn],f[maxn];
    ll ksm(ll a, int b){
    	ll res=1;
    	while(b){
    		if(b&1) res=res*a%mod;
    		a=a*a%mod;
    		b>>=1;
    	}
    	return res;
    }
    int main(){
    	scanf("%d%d",&n,&m);
    	invm=1;
    	for(int i=1;i<=m;i++) invm=(ll)invm*i%mod;
    	invm=ksm(invm,mod-2);
    	int mxn=ksm(2,n);
    	a[0]=1;
    	for(int i=1;i<=m;i++) a[i]=(ll)a[i-1]*(mxn-i)%mod;
    	f[0]=1;
    	for(int i=2;i<=m;i++)
    		f[i]=a[i-1]-f[i-1]-(ll)f[i-2]*(i-1)%mod*(mxn-i+1)%mod,
    		f[i]=(f[i] % mod + mod) % mod;
    	printf("%lld", (ll)f[m] * invm % mod);
    	return 0;
    }
    
    • 1

    信息

    ID
    194
    时间
    1000ms
    内存
    128MiB
    难度
    10
    标签
    递交数
    1
    已通过
    1
    上传者