luogu 5505 [JSOI2011]専門一般化部分および除外

コード:

#include <ビット/ STDC ++ H>    
に#define N 10005    
の#defineは長い長いLL 
名前空間stdを使用します。  
constのLL 1000000007 = MOD;      
setIO(文字列s)無効
{ 
    "に" = S内の文字列+します。
    文字列アウト= sの+ "アウト。"; 
    freopenは(in.c_str()、 "R"、STDIN)。
} 
[N]をint型。
LLのFAC F [N]、INV [N]、[N]、G [N]。    
LLのqpow(LLのX、LLのY)
{ 
    LL TMP = 1LL。
    用(; Y、Y >> = 1、X = X * X%のMOD)
        であれば(Y&1)TMP = TMP * X%MOD。  
    TMPを返します。   
} 
LLのInv(LL X){戻りqpow(X、MOD-2)。} 
LL C(int型のx、int型のY)
{ 
    戻りFAC [X] * INV [Y]%MOD * INV [XY]%MOD。       
}   
メインint型() 
{ 
    // setIO( "入力")。  
    I、J、N、M int型。
    FAC [0] = INV [0] = 1LL。
    用(i = 1; iがN <; ++ I)FAC [i]は= FAC [I-1] * 1LL * I MOD%、INV [I] = Invの(FAC [I])。         
    scanf関数( "%d個の%のD"、&N、&M)。
    用(i = 1; I <= M; ++ I)のscanf( "%dの"、および[I])。        
    用(i = 0; iは= N <; ++ I)
    {       
        F [i]は= C(N、I)。   
        用(J = 1; J <= M; ++ j)は(F [I] = F [i]は* C([J] + NI-1、NI-1)%のMOD)%= MOD。   
    }     
    (i = 0; iが<= N; I ++)のための   
    { 
        %= MOD([I] MOD + MOD%のF、G [0] + = qpow(-1、I)*)。     
    } 
    のprintf( "%LLDする\ n"、G [0])。   
    0を返します。     
}   

  

おすすめ

転載: www.cnblogs.com/guangheli/p/11734770.html