这个题相当于求从1-n的递增方案数,为C(2*n-1,n);
取模要用lucas定理,附上代码:
#includeusing namespace std;typedef long long LL;LL mod=1000000007;LL quick_mod(LL a,LL b){ LL ans=1%mod; while(b){ if(b&1){ ans=ans*a%mod; b--; } b>>=1; a=a*a%mod; } return ans;} LL C(LL n,LL m){ if(m>n)return 0; LL ans=1; for(int i=1;i<=m;i++){ LL a=(n+i-m)%mod; LL b=i%mod; ans=ans*(a*quick_mod(b,mod-2)%mod)%mod; } return ans;}LL lucas(LL n,LL m){ if(m==0)return 1; return C(n%mod,m%mod)*lucas(n/mod,m/mod)%mod;}int main(){ LL a,ans; scanf("%lld",&a); ans=(2*lucas(a*2-1,a)%mod-a+mod)%mod; printf("%lld\n",ans);}