백준 알고리즘 6571번 : 피보나치 수의 개수(Python)

Zoo Da·2021년 7월 17일
0

백준 알고리즘

목록 보기
117/337
post-thumbnail

링크

https://www.acmicpc.net/problem/6571

문제

피보나치 수의 정의는 다음과 같다.

  • f1 := 1
  • f2 := 2
  • fn := fn-1 + fn-2 (n ≥ 3)
    두 수 a와 b가 주어졌을 때, 구간 [a, b]에 포함되는 피보나치 수의 개수를 구하는 프로그램을 작성하시오.

입력

입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 음이 아닌 두 정수 a와 b로 이루어져 있다. 입력의 마지막 줄에는 0이 두 개 주어진다. (a ≤ b ≤ 10100) 두 수 a와 b는 0으로 시작하지 않는다.

출력

각 테스트 케이스에 대해서, a ≤ fi ≤ b 인 피보나치 수 fi의 개수를 출력한다.

예제 입력 및 출력

풀이 코드(Python)

dp = [0 for i in range(1001)]
dp[1] = 1
dp[2] = 2
for i in range(3,1001,1):
  dp[i] = dp[i - 1] + dp[i - 2]

while 1:
  a,b = map(int,input().split())
  if a==0 and b==0:
    break
  cnt = 0
  for i in range(1,1001,1):
    if a <= dp[i] and dp[i] <= b:
      cnt+=1
  print(cnt)

profile
메모장 겸 블로그

0개의 댓글