피보나치 진법
시간 제한1초메모리 제한128 MB
1,2,3,...을 피보나치 진법으로 표현한 문자열들을 이어붙였을 때, 앞에서부터 N개의 문자(N은 최대 10^15) 중에 1이 몇 개 나오는지 구하는 문제입니다.
문제
피보나치 진법은 0과 1만으로 모든 자연수를 유일하게 나타내는 방법이다.
자연수 을 피보나치 진법으로 와 같이 나타내면, 그 값은 이다. 여기서 는 피보나치 수열로 , 로 정의된다. 각 자연수를 유일하게 나타내기 위해, 피보나치 진법에서는 두 개의 1이 서로 인접할 수 없다.
다음은 몇몇 자연수를 피보나치 진법으로 나타낸 것이다.
이제 자연수 를 차례대로 피보나치 진법으로 나타낸 뒤, 그 결과 문자열을 모두 이어 붙이자. 그러면 만들어지는 문자열의 앞부분은 110100101100010011010 이 된다.
이 문자열의 처음 글자 중에 1이 몇 개 있는지 구하여라.
입력
첫째 줄에 정수 이 주어진다. ()
출력
이어 붙인 문자열의 처음 글자에 들어 있는 1의 개수를 출력한다.