結果
| 問題 |
No.2445 奇行列式
|
| コンテスト | |
| ユーザー |
qwewe
|
| 提出日時 | 2025-04-24 12:22:49 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 2,223 bytes |
| コンパイル時間 | 189 ms |
| コンパイル使用メモリ | 81,852 KB |
| 実行使用メモリ | 240,764 KB |
| 最終ジャッジ日時 | 2025-04-24 12:24:35 |
| 合計ジャッジ時間 | 12,331 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 6 WA * 14 |
ソースコード
import sys
from math import gcd
def extended_gcd(a, b):
if a == 0:
return (b, 0, 1)
else:
g, y, x = extended_gcd(b % a, a)
return (g, x - (b // a) * y, y)
def determinant_mod(matrix, n, mod):
det = 1
mat = [row.copy() for row in matrix]
for c in range(n):
pivot = -1
for r in range(c, n):
if mat[r][c] % mod != 0:
pivot = r
break
if pivot == -1:
return 0
if pivot != c:
mat[c], mat[pivot] = mat[pivot], mat[c]
det = (-det) % mod
a = mat[c][c] % mod
if a == 0:
return 0
g, x, y = extended_gcd(a, mod)
if g != 1:
return 0
inv = x % mod
for r in range(c + 1, n):
factor = (mat[r][c] * inv) % mod
for j in range(c, n):
mat[r][j] = (mat[r][j] - factor * mat[c][j]) % mod
det = (det * a) % mod
return det
def compute_permanent_mod(A, n, mod):
row_sums = []
for i in range(n):
sums = [0] * (1 << n)
for mask in range(1, 1 << n):
lsb = mask & -mask
j = (lsb).bit_length() - 1
sums[mask] = (sums[mask ^ lsb] + A[i][j]) % mod
row_sums.append(sums)
total = 0
for mask in range(1, 1 << n):
k = bin(mask).count('1')
if k % 2 == 0:
sign = 1
else:
sign = mod - 1
product = 1
for i in range(n):
product = (product * row_sums[i][mask]) % mod
term = (sign * product) % mod
total = (total + term) % mod
if n % 2 == 1:
total = (-total) % mod
return total
def main():
input = sys.stdin.read().split()
ptr = 0
N = int(input[ptr])
ptr += 1
B = int(input[ptr])
ptr += 1
A = []
for _ in range(N):
row = list(map(int, input[ptr:ptr + N]))
ptr += N
A.append(row)
mod = 2 * B
if N == 0:
print(0)
return
perm = compute_permanent_mod(A, N, mod)
det = determinant_mod(A, N, mod)
s_minus_d = (perm - det) % mod
ans = (s_minus_d // 2) % B
print(ans)
if __name__ == '__main__':
main()
qwewe