結果
問題 |
No.3123 Inversion
|
ユーザー |
|
提出日時 | 2025-04-19 04:01:09 |
言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
結果 |
MLE
|
実行時間 | - |
コード長 | 1,118 bytes |
コンパイル時間 | 449 ms |
コンパイル使用メモリ | 12,416 KB |
実行使用メモリ | 817,508 KB |
最終ジャッジ日時 | 2025-04-19 04:01:18 |
合計ジャッジ時間 | 9,020 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | -- * 1 |
other | MLE * 1 -- * 20 |
ソースコード
import itertools from collections import deque def inverse_perm(p): inv = [0] * len(p) for i, val in enumerate(p): inv[val - 1] = i + 1 return tuple(inv) def reverse_perm(p): return tuple(reversed(p)) def generate_orbit(p): visited = set() queue = deque([p]) while queue: current = queue.popleft() if current in visited: continue visited.add(current) inv = inverse_perm(current) rev = reverse_perm(current) if inv not in visited: queue.append(inv) if rev not in visited: queue.append(rev) return visited def total_score_modulo(n, m): perms = list(itertools.permutations(range(1, n + 1))) visited_global = set() total = 0 for p in perms: if p in visited_global: continue orbit = generate_orbit(p) orbit_size = len(orbit) total += orbit_size * len(orbit) visited_global.update(orbit) return total % m T, M = map(int, input().split()) for _ in range(T): N = int(input()) print(total_score_modulo(N, M))