結果
問題 |
No.3299 K-th MMA String
|
ユーザー |
|
提出日時 | 2025-10-05 17:30:06 |
言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
結果 |
AC
|
実行時間 | 46 ms / 2,000 ms |
コード長 | 1,339 bytes |
コンパイル時間 | 286 ms |
コンパイル使用メモリ | 12,160 KB |
実行使用メモリ | 10,496 KB |
最終ジャッジ日時 | 2025-10-05 17:30:13 |
合計ジャッジ時間 | 2,133 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**18): 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))