프로그래밍/백준

[알고리즘] 백준 6571 파이썬 - 피보나치 수의 개수

매 석 2022. 12. 13. 15:08
반응형

 

 

6571번: 피보나치 수의 개수

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

www.acmicpc.net

문제

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

  • f1 := 1
  • f2 := 2
  • fn := fn-1 + fn-2 (n ≥ 3)

두 수 a와 b가 주어졌을 때, 구간 [a, b]에 포함되는 피보나치 수의 개수를 구하는 프로그램을 작성하시오.

 

문제풀이

#01
a=[None]*480
a[0],a[1]=1,2
for i in range(2,480):
    a[i]=a[i-1]+a[i-2]
while True:
    cnt=0
    x,y=map(int,input().split())
    if(x==0 and y==0):
        break
    #02
    for i in range(len(a)):
        if(a[i]>=x):
            if(a[i]<=y):
                cnt+=1
            else:
                break
    print(cnt)

- #01 : 피보나치 수열을 a[479] 까지 구해준다. 이후 while문을 시작한다.

- #02 : 입력받은 x와 y사이의 피보나치 수의 개수는 몇 갠지 for문을 통해 구한다.

           구한 후 출력해주고, 다음 x,y 값에 대한 피보나치 수의 개수를 구한다.