Computer Science/Algorithm
[Baekjoon] DP - 1003 피보나치 함수
ddu0422
2023. 9. 11. 18:13
문제
1003번: 피보나치 함수
각 테스트 케이스마다 0이 출력되는 횟수와 1이 출력되는 횟수를 공백으로 구분해서 출력한다.
www.acmicpc.net
풀이
"""
0 1 1 2 3 5 8
f(0) = f(0)
f(1) = f(1) = 1f(1) + 0f(0)
f(2) = f(1) + f(0) = 1f(1) + 1f(0)
f(3) = f(2) + f(1) = 2(f1) + 1f(0)
f(4) = f(3) + f(2) = 3f(1) + 2f(0)
f(5) = f(4) + f(3) = 5f(1) + 3f(0)
f(6) = f(5) + f(4) = 8f(1) + 5f(0)
=> 0과 1의 개수가 피보나치 수열을 이룬다.
"""
import sys
t = int(sys.stdin.readline().rstrip())
def solution(n):
if n == 0:
return [1, 0]
a, b = 0, 1
for i in range(2, n + 1):
if not i % 2:
a = a + b
else:
b = b + a
return [a, b] if n % 2 else [b, a]
for _ in range(t):
print(*solution(int(sys.stdin.readline().rstrip())))