結果

問題 No.1815 K色問題
ユーザー okkuukenkenokkuukenken
提出日時 2022-01-12 17:19:26
言語 Python3
(3.12.2 + numpy 1.26.4 + scipy 1.12.0)
結果
RE  
実行時間 -
コード長 2,281 bytes
コンパイル時間 93 ms
コンパイル使用メモリ 12,160 KB
実行使用メモリ 10,112 KB
最終ジャッジ日時 2024-03-13 11:29:56
合計ジャッジ時間 1,355 ms
ジャッジサーバーID
(参考情報)
judge13 / judge11
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 RE -
testcase_01 RE -
testcase_02 RE -
testcase_03 RE -
testcase_04 RE -
testcase_05 RE -
testcase_06 RE -
testcase_07 RE -
testcase_08 RE -
testcase_09 RE -
testcase_10 RE -
testcase_11 RE -
testcase_12 RE -
testcase_13 RE -
testcase_14 RE -
testcase_15 RE -
権限があれば一括ダウンロードができます

ソースコード

diff #

from numba import jit
@jit
def main():
    mod=int(1e9+7)
    fact=[0]*200001
    invfact=[0]*200001
    n,m,k=map(int,input().split())
    fact[0]=1
    for i in range(1,k+1):
        fact[i]=fact[i-1]*i%mod
    for i in range(k+1):
        a=fact[i]
        mm=mod-2
        b=1
        while mm:
            if mm&1:
                b*=a
                b%=mod
            a*=a
            a%=mod
            mm>>=1
        invfact[i]=b
    ans=0
    for i in range(1,k+1):
        tmp=0
        if n==1:
            a=i-1
            x=i
            mm=m-1
            b=1
            while mm:
                if mm&1:
                    b*=a
                    b%=mod
                a*=a
                a%=mod
                mm>>=1
            tmp=b*x%mod
        if n==2:
            a=(i*i-3*i+3)%mod
            x=(i*i-i)%mod
            mm=m-1
            b=1
            while mm:
                if mm&1:
                    b*=a
                    b%=mod
                a*=a
                a%=mod
                mm>>=1
            tmp=b*x%mod
        if n==3:
            a00=(i*i*i-i*i*6+i*14-13)%mod
            a01=(i*i*i-i*i*6+i*13-10)%mod
            a10=(i*i-i*4+5)%mod
            a11=(i*i-i*3+3)%mod
            x=(i*i*i-i*i*3+i*2)%mod
            y=(i*i-i)%mod
            mm=m-1
            b00=1
            b01=0
            b10=0
            b11=1
            while mm:
                if mm&1:
                    bb00=(b00*a00+b01*a10)%mod
                    bb01=(b00*a01+b01*a11)%mod
                    bb10=(b10*a00+b11*a10)%mod
                    bb11=(b10*a01+b11*a11)%mod
                    b00=bb00
                    b01=bb01
                    b10=bb10
                    b11=bb11
                aa00=(a00*a00+a01*a10)%mod
                aa01=(a00*a01+a01*a11)%mod
                aa10=(a10*a00+a11*a10)%mod
                aa11=(a10*a01+a11*a11)%mod
                a00=aa00
                a01=aa01
                a10=aa10
                a11=aa11
                mm>>=1
            tmp=(b00*x+b01*y+b10*x+b11*y)%mod
        tmp*=fact[k]*invfact[i]%mod*invfact[k-i]%mod
        tmp%=mod
        if(k-i)&1:
            tmp=(-tmp+mod)%mod
        ans+=tmp
        ans%=mod
    print(ans)
if __name__ == "__main__":
    main()
0