結果
問題 |
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()