728x90
#1790번 수 이어쓰기 2
import sys
import math
input = sys.stdin.readline
N,k = map(int,input().split())
a = len(str(N))
length_N = 0
#출력 가능인가 판정#
if a == 1:
length_N += N
else:
for i in range (1,a+1):
length_N += 9 * (10 ** (i-1)) * i
length_N += (N - (10 ** a) + 1) * a
#몇번째 digit에 포함되는지 확인
digit = 1
length = 1
while True:
if length <= k and k < length + 9 * digit * (10 ** (digit-1)) :
break
else:
length += 9 * digit * (10 ** (digit-1))
digit += 1
#판정 후 계산#
if k <= length_N:
for i in range (1,digit):
k -= 9 * (10 ** (i-1)) * i
m = 0
while True:
if m * digit + 1 <= k and k <= (m + 1) * digit:
break
else:
m += 1
b = k % digit
c = 10 ** (digit-1) + (m)
print(str(c)[b-1])
else:
print(-1)
Pypy로 풀었네요. 파이썬으로는 실행시간에 부족한게 있었나봅니다.
'코딩' 카테고리의 다른 글
[BOJ] 백준 1016 제곱ㄴㄴ수 Python (0) | 2023.10.27 |
---|---|
[BOJ] 백준 1463 1로 만들기 Python (0) | 2023.10.27 |
[BOJ] 백준 2877 4와 7 Python (0) | 2023.10.27 |
[BOJ] 백준 1059 좋은 구간 Python (0) | 2023.10.27 |
[BOJ] 백준 2553 마지막 팩토리얼 수 Python (0) | 2023.10.27 |