import sys
input = sys.stdin.readline
t = int(input())
zero = [1,0,1,1]
one = [0,1,1,2]
for i in range(4,50):
Z = zero[i-1] + zero[i-2]
O = one[i-1] + one[i-2]
zero.append(Z)
one.append(O)
for i in range(t):
n = int(input())
print(zero[n],one[n])
이 문제는 단순히 피보나치 수를 구하는 것이 아닌, N 번째 피보나치 수가 만들어 질 때 까지 0과 1이 얼마나 출력 되는지 알아보는 문제이다.
때문에 zero, one 이라는 리스트를 만들어 i 번째 피보나치 수에 0과 1이 얼마나 출력이 되는지 i 번째 index 에 저장한다.
index 0에서 3까지 미리 리스트에 넣어두고 for 문을 사용해 범위 4부터 50까지의 i 번째 피보나치 수의 0과 1 출력값을 리스트에 저장한다.
(N 이 40보다 작거나 같은 자연수이기에 범위는 range(4, 41)로 잡아도 될 것이다.)
그 후 테스트 케이스 만큼 출력한다.
n = int(input())
P = [0,1,1]
for i in range(1,n+1):
p = P[1]+P[2]
P.append(p)
P.remove(P[0])
print(P[0])
이건 n 번째 피보나치 수를 구하는 코드이다.
(혹시 이게 필요하신 분을 위해서...)