Codeforces Beta Round #53 C. Array

Array

2nCn-n。
小さいnに対して実際に調べて、OEISに訊いた。
理由を考えてみる。n個の数字からn個を選ぶ重複組合せは2n-1Cn通り。選んだ数字を昇順と降順に並べることでbeautiful arrayが得られる。22n-1Cn=2nCn通り。ただし、これは全てが同じ数字の数列を2度数えている。そのような数列はn通り。
Mを法としたときの1/xはxM-2多倍長整数のまま計算するとTLEだった。

M = 1000000007
n = input()
ans = 1
for i in range(1,n+1):
    ans = ans * (n+i) * pow(i,M-2,M) % M
print (ans-n)%M