結果
問題 |
No.3299 K-th MMA String
|
ユーザー |
|
提出日時 | 2025-10-05 16:22:30 |
言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
結果 |
WA
|
実行時間 | - |
コード長 | 940 bytes |
コンパイル時間 | 252 ms |
コンパイル使用メモリ | 12,032 KB |
実行使用メモリ | 18,208 KB |
最終ジャッジ日時 | 2025-10-05 16:22:44 |
合計ジャッジ時間 | 4,408 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | -- * 3 |
other | WA * 11 TLE * 1 -- * 8 |
ソースコード
N, K = map(int, input().split()) 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 def main(): print(moji, lastk, lastk + MA___s, lastk + MA___s + MMA__s, k) if lastk + MA___s >= K: # はじめの MA___ の中 cnt = lastk start = 2 ** (moji-1) elif lastk + MA___s + MMA__s >= K: # 中盤の MMA__ の中 return 'M' * (N-moji) + 'MMA' + bin(K-lastk-MA___s-1)[2:].zfill(moji-3).replace('0', 'A').replace('1', 'M') else: # 終盤の MMM__ の中 cnt = lastk + MA___s + MMA__s start = 7 * 2 ** (moji-3) for i in range(start, 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 print(main())