結果
問題 |
No.2868 Another String of yuusaan
|
ユーザー |
![]() |
提出日時 | 2025-03-31 17:58:56 |
言語 | PyPy3 (7.3.15) |
結果 |
TLE
|
実行時間 | - |
コード長 | 2,397 bytes |
コンパイル時間 | 151 ms |
コンパイル使用メモリ | 82,596 KB |
実行使用メモリ | 53,100 KB |
最終ジャッジ日時 | 2025-03-31 17:59:37 |
合計ジャッジ時間 | 3,827 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | TLE * 1 -- * 17 |
ソースコード
def main(): import sys N, K = map(int, sys.stdin.readline().split()) def compute_rem_max(K): if K == 0: return 0 target = (K + 1) // 2 if target == 0: return 0 low = 0 high = 60 # since 4^60 is way larger than any K up to 1e15 while low < high: mid = (low + high) // 2 if (1 << (2 * mid)) < target: # 4^mid = 2^(2*mid) low = mid + 1 else: high = mid return low rem_max = compute_rem_max(K) level1 = ['y', 'u', 'u', 's', 'a', 'a', 'n'] current_sum = 0 found_char = None current_rem = 0 k_remaining = 0 for idx, c in enumerate(level1): if c in {'u', 'a'}: rem_initial = N - 1 if rem_initial < 0: size = 1 else: if rem_initial < rem_max: size = 2 * (4 ** rem_initial) - 1 if size > K: size = K + 1 else: size = K + 1 else: size = 1 if current_sum + size >= K: found_char = c k_remaining = K - current_sum current_rem = N - 1 if c in {'u', 'a'} else 0 break current_sum += size current_char = found_char current_rem_steps = current_rem while True: if current_rem_steps == 0 or current_char not in {'u', 'a'}: print(current_char) return substitution = ['y', 'u', 'u', 's', 'a', 'a', 'n'] for c_sub in substitution: if c_sub in {'u', 'a'}: rem_sub = current_rem_steps - 1 if rem_sub < 0: size_sub = 1 else: if rem_sub < rem_max: size_sub = 2 * (4 ** rem_sub) - 1 if size_sub > k_remaining: size_sub = k_remaining + 1 else: size_sub = k_remaining + 1 else: size_sub = 1 if k_remaining <= size_sub: current_char = c_sub current_rem_steps = rem_sub if c_sub in {'u', 'a'} else 0 break else: k_remaining -= size_sub if __name__ == "__main__": main()