結果
問題 |
No.1797 永遠のグリッド
|
ユーザー |
|
提出日時 | 2025-07-01 00:21:31 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 157 ms / 2,000 ms |
コード長 | 1,165 bytes |
コンパイル時間 | 422 ms |
コンパイル使用メモリ | 82,416 KB |
実行使用メモリ | 77,292 KB |
最終ジャッジ日時 | 2025-07-01 00:21:35 |
合計ジャッジ時間 | 3,962 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 27 |
ソースコード
## https://yukicoder.me/problems/no/1797 def main(): H, W, K = map(int, input().split()) if K == 1: print(1) return x = H * W patterns = [-1] * (K ** x) index = 0 for bit in range(K ** x): if patterns[bit] != -1: continue panel = [[-1] * W for _ in range(H)] b = bit y_set = set() for i in range(x): y = b % K y_set.add(y) h = i // W w = i % W panel[h][w] = y b //= K if len(y_set) < K: continue for dh in range(H): for dw in range(W): new_panel = [[-1] * W for _ in range(H)] for h in range(H): for w in range(W): new_panel[h][w] = panel[(h + dh) % H][(w + dw) % W] c = 0 z = 1 for i in range(x): c += new_panel[i // W][i % W] * z z *= K patterns[c] = index index += 1 print(index) if __name__ == "__main__": main()