NKOJ簡単な計算(マトリクスKSM)

制限時間: - MS   スペースの制限: - KB
ベンチマークの説明:時間1秒、空のリミット128メートル
問題の説明

  あなた三つの整数N、X、およびM、次の式が計算されます。

 

なお際マトリックス構造のランク

コード:

//
の#include <ビット/ STDC ++ H>
 使用して 名前空間STDを、
#defineは長い長いっ
のtypedef LL xwz [ 55 ] [ 55 ]。
LLのN、X、M。

xwzのAA; 
xwzのC; 
xwzの解像度。
xwz RRES; 
[DDD LL 55 ]。
ボイド・チェン(CCC xwz、xwzのRR)
{ 
    memsetの(RRES、0はsizeof (RRES))。
    以下のためにint型 i = 1 ; iが= X + < 2 I ++; のためのINT J = 1 ; J <= X + 2、J ++のためのint型のk = 1 ; K <= X + 2、kは++ 
    { 
        RRES [I] [J] =(RRES [I] [J]%Mが+((CCC [I] [K]%mを)*(RR [K] [J]%のM)))%のM。
    } 
    のmemcpy(CCC、RRES、はsizeof (RRES))。
} 
ボイドKSM(xwzのCC)
{ 
    LLのB = N。
    memset(RES、0はsizeof (RES))。
    以下のためにint型 i = 1 ; iは= X + < 2 ; iは++)RES [i]は[I] = 1 一方、(b)は、
    { 
        もし、(B&1 )チェン(RES、CC)。
        B >> = 1 
        チェン(CC、CC)。
    } 
    のmemcpy(CC、RES、はsizeof (RES))。
} 
int型のmain()
{ 
    CIN >> N >> X >> M。
    以下のためにint型 i = 0 ; iは= < 53 ; I ++ 
    { 
        Cを[I] [ 0 ] = 1 ; 
    } 
    のためにint型 i = 1 ; iが<= X + 2 ; I ++ のためのINT J = 1; J <= I; J ++ 
        { 
            C [I] [J] = C [I- 1 ] [j]の%のM + C [I- 1 ] [J- 1 ]%のM。
        } 
    のためのint型 J = 1 ; J <= X + 1、J ++ のためのINT i = 1 ; iは= J <; iは++を
        { 
                AA [I] [J] =(C [J- 1 ] [I- 1 ] * X)%のM。
        } 
    のAA [X + 1 ] [X + 2 ] = AAの[X + 2 ] [X + 2 ] =1 ; 
    KSM(AA)。
    以下のためにint型 i = 1 ; iは= X + < 1 ; iは++ 
    { 
        DDD [I] =のX。
    } 
    LL ANS = 0 INT J = 1 ; J <= X + 2、J ++ 
    { 
        ANS + = DDD [J] * AA [J] [X + 2 ]%のM。
    } 
//     のための(INT J = 1; J <= X + 1、J ++)
 //     {
 //         ANS + = DDD [J] * AA [J] [X + 1]%のM。
//     } 
    のprintf(" %のLLD "、ANS%のM)。
}

 

 

おすすめ

転載: www.cnblogs.com/OIEREDSION/p/11297667.html