만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

이보다 간단할 수 없다!

시간 제한6초메모리 제한1024 MB

요약
1, 1 2 1, 1 2 3 2 1 같은 블록을 차례로 이어 붙인 수열에서 n번째 항을 구합니다. n은 최대 10^500000입니다.
난이도

보통10점 중 4점

유형
수학, 구현
정답자
아직 제출이 없습니다

문제

집에 돌아온 이반은 오늘 수학 동아리 수업에 대해 오랫동안 생각했다. 선생님은 수업에서 무한한 수열을 설명했고, 그중 하나의 예로 다음과 같은 양의 정수 수열을 보여 주었다: ,1⏟,1,2,1⏟,1,2,3,2,1⏟,1,2,3,4,3,2,1⏟,...\underbrace{\vphantom{,}1}, \underbrace{1, 2, 1}, \underbrace{1, 2, 3, 2, 1}, \underbrace{1, 2, 3, 4, 3, 2, 1}, ...

선생님은 이 수열에서 모든 양의 정수가 무한히 많이 나타난다고 설명했다. 하지만 이반은 다른 질문이 궁금했다. 수열의 nn번째 자리에 있는 수는 어떻게 구할 수 있을까? 선생님은 이것이 아주 간단하다고 말하고, 이반에게 직접 풀어 보라고 권했다.

이반은 수학뿐 아니라 프로그래밍도 좋아해서, 매우 큰 nn에 대해서도 빠르게 답할 수 있는 알고리즘을 구현하고 싶어 한다. 그를 도와주자.

입력

첫째 줄에 정수 nn (1≤n≤10500 0001 \leq n \leq 10^{500\,000})이 주어진다.

출력

공백과 불필요한 앞자리 0 없이 정수 하나를 출력한다. 이 수는 주어진 수열의 nn번째 원소이다.

힌트

심사위원단은 모든 테스트에서 제한 시간의 두 배 안에 실행되는 풀이가 존재함을 보장하지 않는다.

예제1

  1. 예제 1

    입력
    7
    
    예상 출력
    3