#!/usr/bin/env python3 import sys def main(): b = int(input()) n = convert_base(b, input()) - 1 # print(n) ok = 0 ng = 10**5 + 1 while abs(ok - ng) > 1: mid = (ok + ng) // 2 if get_length_d(b, mid) < n: ok = mid else: ng = mid # print('max_digit:', ok) # print('max_digit_length:', get_length_d(b, ok)) dig = ok ok = b**dig - 1 ng = b**(dig + 1) base = get_length_d(b, dig) def get_remain_length(b, x): return (dig + 1) * (x - b**dig + 1) while abs(ok - ng) > 1: mid = (ok + ng) // 2 tot = base + get_remain_length(b, mid) if tot <= n: ok = mid else: ng = mid t = base + get_remain_length(b, ok) # print(n) # print(t) s = reconvert(b, ok + 1) # print(s) print(s[n - t]) def get_length_d(b, d): return (d * b**(d+1) - (d+1) * b**d + 1) // (b - 1) def convert_base(b, n): res = 0 n = n[::-1] for ni in n: res = res*b + int(ni) return res def reconvert(b, n): res = [] while n > 0: res.append(str(n % b)) n //= b res.reverse() return ''.join(res) if __name__ == '__main__': assert reconvert(2, 7) == '111' assert reconvert(2, 6) == '110' main()