아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

피보나치 상품권

시간 제한1초메모리 제한256 MB

요약
k와 n이 주어질 때 정확히 k개의 피보나치 수의 합으로 나타낼 수 있는 수 중 n번째로 작은 값을 구하거나, 10^18을 넘으면 NIE를 출력한다.
난이도

어려움10점 중 9점

유형
수학, 조합론, 그리디, 동적 계획법
정답자
아직 제출이 없습니다

문제

학교에서 피보나치를 기념하는 축제를 연다. Johnny는 기념품 가게를 맡았는데, 이 가게에서는 액면가가 피보나치 수인 특별한 상품권으로만 결제할 수 있다. Johnny는 이런 낯선 값들을 다루기 어려워서, 정확히 kk장의 상품권으로 정확히 결제하는 경우만 받기로 했다. 상품권의 액면가는 서로 달라도 되고 같아도 된다. 이제 Johnny는 가격을 정해야 한다. 가게에는 nn개의 서로 다른 물건이 있고, Johnny는 각 물건에 서로 다른 가격을 붙이려 한다. 같은 가격을 결제하는 방법이 여러 가지일 때도 Johnny는 그 가격을 한 번만 센다. Johnny는 모든 가격을 계산했고, 이제 계산이 맞는지 확인하려 한다. 빠르게 확인하려면 마지막 nn번째 가격만 말하면 된다. Johnny를 도와 nn과 kk가 주어졌을 때, 정확히 kk장의 상품권으로 결제할 수 있는 가격 중 nn번째로 작은 가격을 구하는 프로그램을 작성하라.

입력

첫째 줄이자 유일한 줄에 두 정수 kk와 nn이 하나의 공백으로 구분되어 주어진다. (1≤k≤100,1≤n≤10181\leq k \leq 100, 1 \leq n \leq 10^{18})

출력

첫째 줄이자 유일한 줄에 하나의 정수를 출력한다. 액면가가 피보나치 수인 kk장의 상품권(액면가가 같아도 된다)으로 결제할 수 있는 수 중 nn번째로 작은 수를 출력하되, 이 수가 101810^{18} 이하라고 가정한다. 만약 101810^{18}보다 크면 "NIE"(폴란드어로 "아니오")를 출력한다.

힌트

예제 1에서 정확히 22장의 상품권으로는 11과 1212를 결제할 수 없다.

예제 2에서 100번째 피보나치 수는 101810^{18}보다 (훨씬) 크다.

예제2

  1. 예제 1

    입력
    2 11
    
    예상 출력
    13
    
  2. 예제 2

    입력
    1 100
    
    예상 출력
    NIE