結果
| 問題 |
No.3290 Encrypt Failed, but Decrypt Succeeded
|
| コンテスト | |
| ユーザー |
timi
|
| 提出日時 | 2025-10-05 10:43:54 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 122 ms / 2,000 ms |
| コード長 | 772 bytes |
| コンパイル時間 | 4,814 ms |
| コンパイル使用メモリ | 81,780 KB |
| 実行使用メモリ | 112,120 KB |
| 最終ジャッジ日時 | 2025-10-05 10:44:09 |
| 合計ジャッジ時間 | 6,397 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 27 |
ソースコード
N,K=map(int, input().split())
S=input()
dp=[1]
for i in range(N-1,-1,-1):
if i==N-1:
if S[i]=='0':
dp.append(0)
else:
dp.append(1)
else:
dp.append(0)
if S[i]!='0':
dp[-1]+=dp[-2]
else:
continue
s,t=int(S[i]),int(S[i+1])
if s*10+t<=26:
dp[-1]+=dp[-3]
if dp[-1]>K:
dp[-1]=K
dp=dp[::-1]
dp.append(0)
T='!abcdefghijklmnopqrstuvwxyz'
ans=[]
now=0
while now<N:
x=dp[now+1]
if x==0:
ans.append(T[int(S[now])])
now+=1
elif x<K:
a,b=S[now],S[now+1]
ans.append(T[int(a+b)])
now+=2
K-=x
else:
a=S[now]
if int(a)==0:
if ans[-1]=='b':
ans[-1]='t'
if ans[-1]=='a':
ans[-1]='j'
else:
ans.append(T[int(a)])
now+=1
print(''.join(ans))
timi