結果
| 問題 |
No.3299 K-th MMA String
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2025-10-05 17:30:45 |
| 言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
| 結果 |
AC
|
| 実行時間 | 287 ms / 2,000 ms |
| コード長 | 1,338 bytes |
| コンパイル時間 | 269 ms |
| コンパイル使用メモリ | 12,416 KB |
| 実行使用メモリ | 10,624 KB |
| 最終ジャッジ日時 | 2025-10-05 17:30:49 |
| 合計ジャッジ時間 | 2,978 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 20 |
ソースコード
def gutyoku(N:int, K:int):
cnt = 0
for i in range(2 ** (N-1), 2**N):
S = bin(i)[2:].zfill(N).replace('0', 'A').replace('1', 'M')
if S.find('MMA') != -1:
cnt += 1
if cnt == K:
return S
def verify(N:int, K:int):
# moji = 3
# lastk = 1
# k = 1
# d = 2
# a = 1
# b = 1
# while (k < K):
# lastk = k
# temp = a + b
# a = b
# b = temp
# k = k * 2 + d
# d += b
# moji += 1
# MMA__s = 2 ** (moji-3)
# MA___s = k - MMA__s - MMA__s + 1 - lastk
# if K == 1:
# return '110'
# if lastk + MA___s >= K: # はじめの MA___ の中
# cnt = lastk
# start = 2 ** (moji-1)
# elif lastk + MA___s + MMA__s >= K: # 中盤の MMA__ の中
# return '110' + bin(K-lastk-MA___s-1)[2:].zfill(moji-3)
# else: # 終盤の MMM__ の中
# cnt = lastk + MA___s + MMA__s
# start = 7 * 2 ** (moji-3)
cnt = 0
for i in range(0, 2**N):
S = bin(i)
if '110' in S:
cnt += 1
if cnt == K:
return S[2:]
return ''
def after(N:int, K:int) -> str:
S = verify(N, K).replace('0', 'A').replace('1', 'M')
return 'A' * (N - len(S)) + S
N, K = map(int, input().split())
print(after(N, K))