結果
| 問題 | No.2744 Power! or +1 |
| コンテスト | |
| ユーザー |
PNJ
|
| 提出日時 | 2024-04-20 13:34:38 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,061 bytes |
| 記録 | |
| コンパイル時間 | 165 ms |
| コンパイル使用メモリ | 81,792 KB |
| 実行使用メモリ | 121,572 KB |
| 最終ジャッジ日時 | 2024-10-12 09:04:41 |
| 合計ジャッジ時間 | 4,007 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 |
| other | AC * 7 WA * 2 |
ソースコード
import heapq
def dijkstra(s, n, edge):
dist = [float("Inf")]*n
dist[s] = 0
hq = [[0,s]]
heapq.heapify(hq)
while len(hq) > 0:
d,i = heapq.heappop(hq)
if dist[i] < d:
continue
for j,d_1 in edge[i]:
if dist[j] > (dist[i] + d_1):
dist[j] = dist[i] + d_1
heapq.heappush(hq, [dist[j],j])
return dist
N,A,B,C = map(int,input().split())
fact = [1]
for i in range(1,N+1):
f = fact[-1]*i
f %= N
fact.append(f)
dist = [-1 for i in range(N+1)]
G = [[] for i in range(N+1)]
G[N].append((0,C))
for x in range(1,N):
G[x].append(((x+1)%N,A))
for x in range(2,N):
for k in range(2,N+1):
xx = pow(x,k)
if xx >= N:
G[x].append((N,pow(B,k)))
break
G[x].append((xx,pow(B,k)))
if fact[x] == 0:
G[x].append((0,C))
continue
if x >= 9:
G[x].append((N,C))
else:
f = 1
for i in range(1,x+1):
f *= i
if f > N:
G[x].append((N,C))
else:
G[x].append((f,C))
dist = dijkstra(1, N+1, G)
print(dist[0])
PNJ