피보나치 상품권
시간 제한1초메모리 제한256 MB
k와 n이 주어질 때 정확히 k개의 피보나치 수의 합으로 나타낼 수 있는 수 중 n번째로 작은 값을 구하거나, 10^18을 넘으면 NIE를 출력한다.
문제
학교에서 피보나치를 기념하는 축제를 연다. Johnny는 기념품 가게를 맡았는데, 이 가게에서는 액면가가 피보나치 수인 특별한 상품권으로만 결제할 수 있다. Johnny는 이런 낯선 값들을 다루기 어려워서, 정확히 장의 상품권으로 정확히 결제하는 경우만 받기로 했다. 상품권의 액면가는 서로 달라도 되고 같아도 된다. 이제 Johnny는 가격을 정해야 한다. 가게에는 개의 서로 다른 물건이 있고, Johnny는 각 물건에 서로 다른 가격을 붙이려 한다. 같은 가격을 결제하는 방법이 여러 가지일 때도 Johnny는 그 가격을 한 번만 센다. Johnny는 모든 가격을 계산했고, 이제 계산이 맞는지 확인하려 한다. 빠르게 확인하려면 마지막 번째 가격만 말하면 된다. Johnny를 도와 과 가 주어졌을 때, 정확히 장의 상품권으로 결제할 수 있는 가격 중 번째로 작은 가격을 구하는 프로그램을 작성하라.
입력
첫째 줄이자 유일한 줄에 두 정수 와 이 하나의 공백으로 구분되어 주어진다. ()
출력
첫째 줄이자 유일한 줄에 하나의 정수를 출력한다. 액면가가 피보나치 수인 장의 상품권(액면가가 같아도 된다)으로 결제할 수 있는 수 중 번째로 작은 수를 출력하되, 이 수가 이하라고 가정한다. 만약 보다 크면 "NIE"(폴란드어로 "아니오")를 출력한다.
힌트
예제 1에서 정확히 장의 상품권으로는 과 를 결제할 수 없다.
예제 2에서 100번째 피보나치 수는 보다 (훨씬) 크다.