結果
| 問題 | No.2744 Power! or +1 |
| コンテスト | |
| ユーザー |
PNJ
|
| 提出日時 | 2024-04-20 14:18:30 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
MLE
|
| 実行時間 | - |
| コード長 | 1,359 bytes |
| 記録 | |
| コンパイル時間 | 277 ms |
| コンパイル使用メモリ | 81,884 KB |
| 実行使用メモリ | 912,488 KB |
| 最終ジャッジ日時 | 2024-10-12 09:50:08 |
| 合計ジャッジ時間 | 8,642 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | -- * 2 |
| other | MLE * 1 -- * 8 |
ソースコード
import heapq
inf = 1 << 63
def dijkstra(s, n, edge):
dist = [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)
G = [[] for i in range(2*N)]
for x in range(1,N):
G[N+x].append((0,C))
G[N].append((0,0))
for x in range(1,2*N):
G[x].append(((x+1) % (2*N),A))
for x in range(2,N):
f = 0
xx = x
b = B
for k in range(2,22):
xx *= x
if f == 0:
if xx >= N:
f = 1
xx %= N
else:
xx %= N
b *= B
if b >= 2*A + 4*C:
break
if xx % N == 0:
G[x].append((0,b))
G[x+N].append((0,b))
break
if f:
G[x].append((N+xx,b))
else:
G[x].append((xx,b))
G[x+N].append((N + xx,b))
if fact[x] == 0:
G[x].append((0,C))
continue
if x >= 9:
G[x].append((N + fact[x],C))
else:
f = 1
for i in range(1,x+1):
f *= i
if f > N:
G[x].append((N + fact[x],C))
else:
G[x].append((fact[x],C))
dist = dijkstra(1, 2*N, G)
print(dist[0])
PNJ