1 条题解
-
0
C++ :
#include<cstdio> #define N 1000000 #define LL long long #define mo 1000000007 using namespace std; int n,k; int f[N+5],inv[N+5],fac[N+5]; main() { scanf("%d%d",&n,&k); fac[0]=1;inv[0]=inv[1]=1; for (int i=1;i<=n;++i) fac[i]=fac[i-1]*(LL)i%mo; for (int i=2;i<=n;++i) inv[i]=(LL)(mo-mo/i)*inv[mo%i]%mo; for (int i=2;i<=n;++i) inv[i]=inv[i]*(LL)inv[i-1]%mo; int sum=0,ans=0,t=2; for (int i=n;i>=k;--i) { sum=(LL)fac[n]*inv[k]%mo*inv[n-i]%mo*inv[i-k]%mo*(t-1)%mo; t=(LL)t*t%mo; if (i-k&1) ans-=sum; else ans+=sum; if (ans>=mo) ans-=mo; if (ans<=-mo) ans+=mo; } printf("%d\n",(ans+mo)%mo); }
- 1
信息
- ID
- 2569
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者