문제
백준 10327
설명
Gabonachi 를 주어진 시작 수 a
, b
로 구성해보면
a, b, a+b, a + 2b, 2a+3b, 3a + 5b, 5a + 8b, 8a + 13b, ...
a
, b
의 계수가 피보나치 수임을 알 수 있음.
- 다시말해 \(F_{n-1} \times a + F_{n} \times b = C\)
가장 작은 a, b 를 구해야하므로 피보나치의 계수가 큰 경우부터 계산하면 됨.
- 주어진 숫자보다 바로 작은 두 피보나치 수부터
- \(F_{n-1} \times a + F_{n} \times b = C\) 를 만족하면서
- \(0 < a < b\) 인 수가 존재하는지 찾고
- 없는 경우 그것보다 작은 피보나치로 교체 후 반복하면 됨.
이를 구하는 방법은 2가지가 있음.
- 피보나치가 기하급수적으로 커지므로 주어진 인풋으로는 브루트포스 도 가능함
- 혹은 확장 유클리드 호제법 을 이용해 빠르게 구할 수 있음.
시간 복잡도
O(N) or O(LogN)
코드
댓글남기기