Files

61 lines
1.5 KiB
Python

import math
from decimal import Decimal, getcontext
getcontext().prec = 32
class ДимаЗарплата:
TRI = Decimal(1) / Decimal(3)
def __init__(self, k: int):
self.k = k
def solve(self) -> str:
u = 1
minima = (Decimal(10) ** (u - 1)) ** self.TRI
maxima = (Decimal(10) ** (u)) ** self.TRI
delta = 2
cnt = delta * u
now = self.k
while now - cnt > 0:
now -= cnt
u += 1
if (u - 1) % 3 != 0:
minima = (Decimal(10) ** (u - 1)) ** self.TRI
else:
minima = Decimal(10) ** ((u - 1) // 3)
if u % 3 != 0:
maxima = (Decimal(10) ** u) ** self.TRI
else:
maxima = Decimal(10) ** (u // 3)
if u % 3 == 0:
delta = int(maxima) - math.ceil(minima)
elif (u - 1) % 3 == 0:
delta = int(maxima) - int(minima) + 1
else:
delta = int(maxima) - math.ceil(minima) + 1
cnt = u * delta
if u == 1:
return str((math.ceil(minima) + now - 1) ** 3)[0]
else:
d, m = divmod(now - 1, u)
return str((math.ceil(minima) + d) ** 3)[m]
def test():
D_V = "".join(str(i**3) for i in range(1, 1000))
for i, c in enumerate(D_V):
solver = ДимаЗарплата(i + 1)
if solver.solve() != c:
return False
return True
if __name__ == "__main__":
k = int(input())
print(ДимаЗарплата(k).solve())