結果
| 問題 |
No.3290 Encrypt Failed, but Decrypt Succeeded
|
| コンテスト | |
| ユーザー |
ゼット
|
| 提出日時 | 2025-10-03 22:20:20 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 202 ms / 2,000 ms |
| コード長 | 1,974 bytes |
| コンパイル時間 | 354 ms |
| コンパイル使用メモリ | 82,736 KB |
| 実行使用メモリ | 119,344 KB |
| 最終ジャッジ日時 | 2025-10-03 22:20:25 |
| 合計ジャッジ時間 | 5,408 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 27 |
ソースコード
N,K=map(int,input().split())
S=input()
v=[1]*(N+1)
for i in range(2,N+1):
v[i]=v[i-1]+v[i-2]
if v[i]>10**19:
v[i]=10**19
h=[0]*(N+2)
h[N]=1
s=1
x=1
for i in range(N-1,-1,-1):
if S[i]=='1':
if i<N-1 and S[i+1]=='0':
h[i]=h[i+2]
continue
h[i]=h[i+1]+h[i+2]
if h[i]>10**19:
h[i]=10**19
elif S[i]=='2':
if i<N-1 and S[i+1]=='0':
h[i]=h[i+2]
elif i<N-1 and int(S[i+1])<=6:
h[i]=h[i+1]+h[i+2]
if h[i]>10**19:
h[i]=10**19
else:
h[i]=h[i+1]
elif S[i]=='0':
h[i]=0
else:
h[i]=h[i+1]
result=[]
now=0
rest=K-1
while True:
if now==N-1:
c=int(S[now])-1
result.append(chr(ord('a')+c))
now+=1
else:
if S[now]=='1':
if S[now+1]=='0':
c=int(S[now])*10+int(S[now+1])-1
result.append(chr(ord('a')+c))
now+=2
elif now<N-2 and S[now+2]=='0':
c=int(S[now])-1
result.append(chr(ord('a')+c))
now+=1
else:
if h[now+1]<=rest:
rest-=h[now+1]
c=int(S[now])*10+int(S[now+1])-1
result.append(chr(ord('a')+c))
now+=2
else:
c=int(S[now])-1
result.append(chr(ord('a')+c))
now+=1
elif S[now]=='2':
if S[now+1]=='0':
c=int(S[now])*10+int(S[now+1])-1
result.append(chr(ord('a')+c))
now+=2
elif now<N-2 and S[now+2]=='0':
c=int(S[now])-1
result.append(chr(ord('a')+c))
now+=1
elif int(S[now+1])<=6:
if h[now+1]<=rest:
rest-=h[now+1]
c=int(S[now])*10+int(S[now+1])-1
result.append(chr(ord('a')+c))
now+=2
else:
c=int(S[now])-1
result.append(chr(ord('a')+c))
now+=1
else:
c=int(S[now])-1
result.append(chr(ord('a')+c))
now+=1
else:
c=int(S[now])-1
result.append(chr(ord('a')+c))
now+=1
if now>=N:
break
print(*result,sep='')
ゼット