시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
---|---|---|---|---|---|
1 초 | 128 MB | 129 | 52 | 32 | 42.105% |
피보나치 진법이란 0과 1만을 이용해 자연수를 유일하게 표현하는 방법이다.
자연수 \(N\)을 피보나치 진법 \(N=\overline { a_{n}a_{n-1}\cdots a_{1} } _{F} \) 으로 나타냈을 때, \(N\)의 값은 \(N=a_{ n }\cdot F_{ n }+a_{ n-1 }\cdot F_{ n-1}+ \cdots + a_1 \cdot F_1\)이 된다. \(F_k\)는 피보나치 수열로 \(F_0 = F_1 = 1, F_i = F_{i-1} + F_{i-2}\)이다. 각 자연수를 유일하게 표현하기 위해서 피보나치 진법에서는 1이 인접할 수 없다.
다음은 자연수 일부를 피보나치 진법으로 나타낸 것이다.
\[ 1 = 1_F \\ 2 = 10_F \\ 3 = 100_F \\ 4 = 101_F \\ 5 = 1000_F \\ 6 = 1001_F \\ 7 = 1010_F \]
상근이는 자연수를 피보나치 진법으로 순서대로 나타낸 뒤, 그 수를 모두 붙였다. 즉, 이 문열의 첫 부분은 110100101100010011010... 이 된다.
상근이는 이 문자열의 처음 N글자 중에 1의 개수가 몇 개나 있는지 궁금해졌다.
N이 주어졌을 때, 상근이가 만든 문자의 처음 N글자 중 1의 개수를 구하는 프로그램을 작성하시오.
첫째 줄에 N이 주어진다. (0 ≤ N ≤ 1015)
첫째 줄에 상근이의 문자열의 처음 N글자 중 1의 개수를 출력한다.
21
10
ICPC > Regionals > Northern Eurasia > Northern Eurasia Finals > NEERC 2008 F번