/ * n個のボックスが与えられると、i番目のボックスは、AIの花は、今M花、Q番号を選択プログラムから選択有する Mに撥定理を受信することにより= X1 + X2 + ... + Xnを C(M + N-1、 N1)+ SUM {(-1)^(M + N - 1-(N1 + P * 1つのC) - (。+ NP 1)、N1)} / * の#include <ビット/ STDC ++ H.> 使用して 名前空間STD; の#define LLロングロング の#define MOD 1000000007 LL ANS、N-、S、A [ 30 ]、INV [ 30 ]; LLパウ(LL、LLのB){ LL RES = 1。; 一方、(B){ IF(%のB 2 ) のRES =のRES *%MOD; B >> = 1 ; A = A *%MOD。 } 戻りRESと、 } LL C(LL Y、LLのX){ 場合(Y < 0 || X < 0 || Y <X)戻り 0 ; Yの%= MOD。 もし(Y == 0 || X == 0)リターン 1 。 LL ANS = 1 。 用(LL i = 0 ; iは<X、iは++ ) ANS =(LL)は(YI)* ANS%MOD。 用(LL i = 1 ; iは= xを<I ++は) ANS = ANS * INV [I]%MOD。 リターンANS; } int型のmain(){ CIN >> N >> S。 用(LL i = 1 ; iは= < 20 ; iが++ ) INV [I] =パウ(I、mod- 2 )。 以下のために(int型 i = 0 ; iがn <; iは++)CIN >> Aを[I]。 以下のために(LL i = 0 ; iが(< 1 << N)、iは++ ){ LLのA = N- 1、B =秒+ N- 1、TMP = 0 。 もし(I == 0 ){ ANS =(ANS + C(B、A))%MOD。 継続 ; } のための(INT J = 0 ; J <N; J ++ ) 場合(I&((LL)1 << J)){ TMP ++ 。 B - = A [J] + 1 。 } であれば(TMP%2){ // 减法 ANS =(ANS-C(B、A))%MOD。 ANS =(ANS + MOD)%MOD。 } 他{ ANS =(ANS + C(B、A))%MOD。 } } COUT << ANS << ' \ nを' ; }