피보나치 표현
시간 제한3초메모리 제한128 MB
각 질의 k에 대해 부호 있는 합(더하기와 빼기, 중복 허용)이 k가 되는 피보나치 수의 최소 개수를 구한다.
문제
피보나치 수열은 다음과 같이 정의되는 정수 수열이며, 그 원소를 피보나치 수라고 부른다.
- , , 그리고 일 때
수열의 앞부분은 이다.
Byteasar는 어떤 정수를 여러 피보나치 수의 합과 차로 나타내는 방법을 연구하고 있다. 지금 그가 알고 싶은 것은 주어진 양의 정수 에 대한 최소 표현, 즉 사용하는 피보나치 수의 개수가 가장 적은 표현이다. 같은 피보나치 수를 여러 번 사용해도 된다. 예를 들어 , , , 은 각각 최소 , , , 개의 피보나치 수로 다음과 같이 나타낼 수 있다.
양의 정수 가 주어질 때, 를 피보나치 수들의 합과 차로 나타내는 데 필요한 피보나치 수의 최소 개수를 구하는 프로그램을 작성하시오.
입력
첫째 줄에 질의의 개수를 나타내는 양의 정수 ()가 주어진다. 이어지는 개의 줄에는 각각 하나의 양의 정수 ()가 주어진다.
출력
각 질의에 대해, 를 피보나치 수들의 합과 차로 나타내는 데 필요한 피보나치 수의 최소 개수를 한 줄에 하나씩 출력한다.