結果
問題 | No.2868 Another String of yuusaan |
ユーザー |
|
提出日時 | 2024-08-30 21:55:12 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 41 ms / 2,000 ms |
コード長 | 1,172 bytes |
コンパイル時間 | 296 ms |
コンパイル使用メモリ | 82,248 KB |
実行使用メモリ | 53,744 KB |
最終ジャッジ日時 | 2024-08-30 21:55:15 |
合計ジャッジ時間 | 2,128 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 18 |
ソースコード
import sys input = lambda :sys.stdin.readline()[:-1] ni = lambda :int(input()) na = lambda :list(map(int,input().split())) yes = lambda :print("yes");Yes = lambda :print("Yes");YES = lambda : print("YES") no = lambda :print("no");No = lambda :print("No");NO = lambda : print("NO") ####################################################################### def L(k): return 2 * 4 ** k - 1 def f(k, n): #print(k, n) if k == 1: return "yuusaan"[n] if n == 0: return "y" elif n - 1 < 2 * L(k-1): return f(k-1, (n - 1) % L(k-1)) elif n == 2 * L(k-1) + 1: return "s" elif n - 2 - 2 * L(k-1) < 2 * L(k-1): return f(k-1, (n - 2 - 2 * L(k-1)) % L(k-1)) else: return "n" def g(k, n): if n < k: return "y" elif k <= 30: return f(k, n) else: n -= k - 30 return f(30, n) # from random import randint # for _ in range(100): # K = randint(1, 1000) # N = randint(0, 10 ** 15) # if L(K) <= N: # continue # if g(K, N) != f(K, N): # print(K, N) # print(g(K, N), f(K, N)) # break k, n = na() n -= 1 print(g(k, n))