結果
| 問題 | No.2045 Two Reflections |
| コンテスト | |
| ユーザー |
shobonvip
|
| 提出日時 | 2022-08-20 20:11:10 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 103 ms / 2,000 ms |
| コード長 | 977 bytes |
| 記録 | |
| コンパイル時間 | 330 ms |
| コンパイル使用メモリ | 82,180 KB |
| 実行使用メモリ | 79,872 KB |
| 最終ジャッジ日時 | 2024-10-09 12:02:23 |
| 合計ジャッジ時間 | 3,392 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 27 |
ソースコード
from collections import defaultdict
def pfact(m):
pf = {}
for i in range(2,int(m**0.5)+1):
while m%i == 0:
pf[i] = pf.get(i,0) + 1
m //= i
if m>1 : pf[m]=1
return pf
mod = 998244353
N, p, q = map(int,input().split())
if p == 1 and q == 1:
print(1)
elif p == 1:
print(2)
elif q == 1:
print(2)
elif p + q <= N:
print(4)
else:
graph = [0] * 2*N
# EVEN TO ODD
for i in range(N):
if i < p:
graph[i] = p-1-i + N
else:
graph[i] = i + N
# ODD TO EVEN
for i in range(N):
if N-q <= i:
graph[N + i] = 2*N-q-1-i
else:
graph[N + i] = i
tansaku = [0] * 2*N
dic = defaultdict(int)
for st in range(2 * N):
if tansaku[st] == 0:
tansaku[st] = 1
mada = [st]
s = 1
while mada:
i = mada.pop()
if tansaku[graph[i]] == 0:
tansaku[graph[i]] = 1
mada.append(graph[i])
s += 1
for i, j in pfact(s).items():
dic[i] = max(dic[i], j)
ans = 1
for i, j in dic.items():
ans = ans * pow(i, j, mod) % mod
print(ans)
shobonvip