#!/usr/bin/python2 # -*- coding: utf-8 -*- # † from math import log from collections import deque digits = [0,1,2,3,4,5,6,7,8,9] # 基数変換. 10進数の{num}を{base}進数にします。 def int2base(num, base): assert base > 1 if num == 0: return [digits[0]] v = [] while num != 0: q, r = divmod(num, base) v.append(digits[r]) num = q v.reverse() return v # 基数変換. {base}進数で表現された{s}を10進数にします。 #base2int = lambda s, base: int(s, base) def base2int(v, base): if len(v) == 0: return 0 num = 0 for c in v: num *= base num += digits[c] return num # B進 で v0 + v1 def add(v0, v1, B): n0 = len(v0) n1 = len(v1) n = max(n0, n1) + 1 v0 = [0] * (n - n0) + v0 v1 = [0] * (n - n1) + v1 v = deque([0] * n) carry = 0 for i in reversed(xrange(1, n)): v[i] = carry + v0[i] + v1[i] if v[i] >= B: v[i] -= B carry = 1 while v[0] == 0 and len(v) > 1: v.popleft() return v # B進 で v0 - v1 # v0 >= v1 であること def sub(v0, v1, B): n0 = len(v0) n1 = len(v1) v1 = [0] * (n0-n1) + v1 v = deque(v0) for i in reversed(xrange(n0)): v[i] -= v1[i] if v[i] < 0: v[i-1] -= 1 v[i] += B while v[0] == 0 and len(v) > 1: v.popleft() return v # s <= t か def leq(s, t): n1 = len(s) n2 = len(t) if n1 < n2: return True if n1 > n2: return False for i in xrange(n1): if s[i] < t[i]: return True if s[i] > t[i]: return False return True # i文字の開始位置 B進 def create(B, i): if i == 1: return [1] if i == 2: return [1, 0] res = int2base(i-2, B) + [B-2] * (i-3) + [B-1, 0] return res def f(B, D): lo, hi = 0, 10**6 # lo: D番目が属する文字数 while hi - lo > 1: md = (lo + hi) / 2 rrr = leq(create(B, md), D) if rrr: lo = md else: hi = md posB = create(B, lo) difB = sub(D, posB, B) dif10 = base2int(difB, B) if dif10 == 0: return 1 z, r = divmod(dif10, lo) w = z + B**(lo-1) m = int(log(w, B)) + 1 return (w / B**(m-1-r)) % B B = int(raw_input()) D = map(int, raw_input()) res = f(B, D) print res