結果

問題 No.2444 一次変換と体積
ユーザー Nikkuniku029
提出日時 2023-08-25 23:19:31
言語 Python3
(3.13.1 + numpy 2.2.1 + scipy 1.14.1)
結果
WA  
実行時間 -
コード長 1,080 bytes
コンパイル時間 248 ms
コンパイル使用メモリ 12,416 KB
実行使用メモリ 45,188 KB
最終ジャッジ日時 2024-12-24 11:11:59
合計ジャッジ時間 13,281 ms
ジャッジサーバーID
(参考情報)
judge1 / judge3
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 6 WA * 11 RE * 3
権限があれば一括ダウンロードができます

ソースコード

diff #

import numpy as np


def modinv(a: int, m: int) -> int:
    '''
    モジュラ逆元
    ax mod m =1の解x=a^(-1)を返す

    Parameters
    ----------
    a:int
    m:int
    '''
    x, y, u, v = 1, 0, 0, 1
    M = m
    while m > 0:
        k = a//m
        x -= k*u
        y -= k*v
        x, u = u, x
        y, v = v, y
        a, m = m, a % m
    assert a == 1, "a and m aren't relatively prime numbers"
    if x < 0:
        x += M
    return x


def mat_mul(a, b):
    """
    a: 行列(2次元配列)I*J
    b: 行列(2次元配列)J*K
    """
    I, J, K = len(a), len(b[0]), len(b)
    c = [[0] * J for _ in range(I)]
    for i in range(I):
        for j in range(J):
            for k in range(K):
                c[i][j] += a[i][k] * b[k][j]
    return c


N, B = map(int, input().split())
A = [list(map(int, input().split())) for _ in range(3)]
mat = np.matrix(A)
rank = np.linalg.matrix_rank(mat)
if 0 < rank < 3:
    exit(print(0))
elif rank == 0:
    exit(print('infty'))
det = int(np.linalg.det(mat))
detn = pow(det, N, B)
ans = modinv(detn, B)
print(ans)
0