This page is still under construction.

Parts of this page are still being built. What you see may change.

Fib Inverse

Time limit1sMemory limit512 MB

Summary
Given Fibonacci numbers, find each one's index, taking the larger index when two match.
Level

Medium4 of 10

Topics
Math, Hash map, String
Solved
No attempts yet

Problem

\[F_n =  \begin{cases} 0  & \text{if n = 0;} \\ 1   & \text{if n = 1;} \\ F_{n-1} + F_{n-2}   & \text{if n > 1.} \end{cases}\]

피보나치 수는 수학에서 위의 점화식으로 정의되는 수열이다. 피보나치 수는 0과 1로 시작하며, 다음 피보나치 수는 바로 앞의 두 피보나치 수의 합이 된다. n = 0, 1,...에 해당하는 피보나치 수는 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946… 이다. 

프로그래밍 실습에서 문제 중 n을 입력 받았을 때 Fn의 값을 출력하는 문제가 자주 등장한다. 실습을 하고 있던 희원이는 문득 이 문제가 너무 쉽다고 생각했다. 희원이는 실습 도중 반대로 Fn이 주어졌을 때 n을 출력하는 문제는 어떨지 궁금했다.  피보나치 수 Fn이 주어졌을 때 n을 출력하는 프로그램을 만들어 보자.

Input

첫 번째 줄에 테스트케이스를 나타내는 T(1 ≤ T ≤ 100)가 입력으로 주어진다. 두 번째 줄부터 각 테스트케이스마다 양의 정수 Fn이 입력으로 주어진다. (1 ≤ Fn ≤ 1021000, 1 ≤ N ≤ 100,000)

Output

피보나치 수 Fn이 주어졌을 때 n을 출력한다. 만약 가능한 경우가 여러 개 있는 경우에는 가장 큰 인덱스를 출력하라. 피보나치 수가 아닌 수가 들어오는 경우는 없다.

Examples4

  1. Example 1

    Input
    4
    1
    5
    8
    1597
    
    Expected output
    1
    5
    6
    17
    
  2. Example 2

    Input
    1
    2
    
    Expected output
    3
    
  3. Example 3

    Input
    1
    3
    
    Expected output
    4
    
  4. Example 4

    Input
    1
    13
    
    Expected output
    7