고대 달력
시간 제한2초메모리 제한1024 MB
N이 최대 10^18일 때, 1, 2, 3, ...의 제켄도르프 표현을 이어 붙인 문자열 처음 N글자에 나타나는 연속된 0 쌍의 개수를 구합니다.
문제
바시는 최근 베를란드 학자들이 사라진 아프렐리야 원주민의 고대 달력을 발견했다는 기사를 읽었다. 이 달력은 다른 많은 고대 달력과 마찬가지로 머지않은 세계 종말을 예언했다.
원주민들은 신성한 수를 바탕으로 달력을 만들었다. 0번째 신성한 수는 1이고, 1번째 신성한 수도 1이다. 그다음 신성한 수 는 바로 앞의 두 수의 합이다: .
모든 자연수는 ()들의 합으로 나타낸다. 이때 합에 가 들어 있으면 과 은 들어갈 수 없다. 이 표기법에서 예를 들어 16은 100100으로 쓴다. 이기 때문이다.
자연수 의 이 표기를 라 하자. 달력은 모든 자연수의 표기를 1부터 차례로 이어 붙인 문자열 이다.
바시는 달력의 첫 글자부터 번째 글자까지에 연속한 0 두 개로 이루어진 묶음이 몇 개 있는지 구해 달라고 부탁한다.
입력
입력 파일에는 정수 ()이 한 개 주어진다. 바시가 관심을 갖는 마지막 글자의 번호이다.
출력
달력의 처음 개 글자에서 연속한 0 두 개가 나타나는 횟수를 한 줄로 출력한다.
힌트
달력의 처음 20글자는 11010010110001001101이다.