만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

피보나치 더하기

면접 대비

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

요약
정수 k와 x가 주어질 때, x를 피보나치 수 k개의 합으로 나타낼 수 있는지 판별합니다. 같은 수를 여러 번 쓸 수 있습니다.
난이도

쉬움10점 중 3점

유형
완전 탐색, 해시맵
정답자
아직 제출이 없습니다

문제

두 양의 정수 kk, xx가 주어진다. 피보나치 수열의 항 중에서 정확히 kk개를 더하여 xx를 만들 수 있는지 판별하여라. 이때 같은 항을 여러 번 선택할 수 있다.

피보나치 수열은 F_1=F_2=1F\_1 = F\_2 = 1, F_n=F_n−1+F_n−2F\_n = F\_{n-1} + F\_{n-2} (n≥3)(n \geq 3)로 정의된다.

입력

첫 번째 줄에 테스트케이스의 수 TT가 주어진다. (1≤T≤100)(1 \leq T \leq 100)

다음 TT개의 줄에 사용할 피보나치 항의 개수 kk와 만들고자 하는 양의 정수 xx가 공백으로 구분되어 주어진다. (1≤k≤3; 1≤x≤1016)(1 \leq k \leq 3;\, 1 \leq x \leq 10^{16})

출력

TT개의 줄에 답을 출력한다. ii번째 줄에는 ii번째 테스트케이스의 답을 출력한다. 정확히 kk개의 피보나치 항을 더해서 xx를 만들 수 있으면 YES, 만들 수 없으면 NO를 출력한다.

대소문자를 구분한다. Yes, yes 등은 정답으로 인정되지 않는다.

힌트

입력값은 int 자료형의 범위를 넘을 수 있다. long long 등 64비트 자료형을 사용하는 것을 권장한다.

출력할 때 대소문자에 유의한다. Yes, yes 등은 정답으로 인정되지 않는다.

예제1

  1. 예제 1

    입력
    6
    1 3
    1 6
    2 6
    2 12
    3 12
    3 824
    
    예상 출력
    YES
    NO
    YES
    NO
    YES
    NO