結果
| 問題 |
No.3229 Liar Game Comibination
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2025-08-08 22:38:30 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
RE
|
| 実行時間 | - |
| コード長 | 2,074 bytes |
| コンパイル時間 | 349 ms |
| コンパイル使用メモリ | 82,340 KB |
| 実行使用メモリ | 279,376 KB |
| 最終ジャッジ日時 | 2025-08-08 22:38:42 |
| 合計ジャッジ時間 | 10,717 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 13 RE * 4 TLE * 1 -- * 11 |
ソースコード
mod = 2
def inplace_sweep(n: int, m: int, a):
# returns [is pivot]
piv = [False] * m
r = 0
for j in range(m):
if a[r][j] == 0:
for i in range(r + 1, n):
if a[i][j]:
a[r], a[i] = a[i], a[r]
break
if a[r][j] == 0:
continue
inv = pow(a[r][j], -1, mod)
a[r] = [e * inv % mod for e in a[r]]
ar = a[r]
for i in range(n):
c = a[i][j]
if i == r or c == 0:
continue
a[i] = [(e - c * er) % mod for e, er in zip(a[i], ar)]
piv[j] = True
r += 1
if r == n:
break
return piv
def solve_linear_equation(n: int, m: int, a, b):
"""returns (x0, rank, ker basis) | None"""
if n == 0:
es = [[0] * m for _ in range(m)]
for i in range(m):
es[i][i] = 1
return [], m, es
exa = [[e % mod for e in ai] + [bi % mod] for ai, bi in zip(a, b)]
is_piv = inplace_sweep(n, m + 1, exa)
r = sum(is_piv)
if r == 0:
es = [[0] * m for _ in range(m)]
for i in range(m):
es[i][i] = 1
return [0] * m, m, es
if is_piv[m]:
return None
piv = [i for i in range(m) if is_piv[i]]
un_piv = [i for i in range(m) if not is_piv[i]]
x0 = [0] * m
for i, p in enumerate(piv):
x0[p] = exa[i][m]
es = [[0] * m for _ in range(m - r)]
for i, p in enumerate(piv):
row = exa[i]
for j, up in enumerate(un_piv):
es[j][p] = mod - row[up] if row[up] else 0
for i, p in enumerate(un_piv):
es[i][p] = 1
return x0, m - r, es
def main():
from sys import stdin
def input():
return stdin.readline().rstrip("\n")
n, m, k = map(int, input().split())
a = [tuple(map(int, input())) for _ in range(n)]
b = [0] * m
ans = solve_linear_equation(m, n, a, b)
if ans is None:
print(0)
return
x0, r, es = ans
print(pow(2, r, k))
if __name__ == "__main__":
main()