문제 41, 피보나치 수의 개수, How many Fibs?, PC/UVa ID : 110601/10183, 인기도 : B, 성공률 : 보통, 레벨 : 1

이 포스트를 만든 목적

  • 생각 절차, 푼 방법, 고민거리 등을 기록하기 위해서 만들었다.

이 포스트의 준비물

  • Mozila Firefox 6.0
  • eclipse 3.6.1 + vrapper
  • java

참조 문헌

  • 스티븐 스키에나, 미구엘 레비야 저. Programming Challenges: 알고리즘 트레이닝 북. 서환수 역.
    Springer. 한빛미디어 초판 2쇄 2004.12.05. (문제 41, 피보나치 수의 개수, How many Fibs?, p.172)

참조 링크

간략한 이야기/프로그램의 입출력

피보나치 수는 다음 처럼 정의 된다.

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

두개의 수 a 와 b 가 주어졌을 때, 이 두 수 사이에 얼마나 많은 피보나치 수가 있는지 계산해라.

입력
  • 여러개의 테스트 케이스가 입력될 수 있다.
  • 각 테스트 케이스는 두개의 수 a, b를 입력 받는다.
  • a 와 b가 0일 경우, 프로그램은 종료된다.

  • a와 b의 범위는 a<=b<=10100 이며, a, b는 양의 정수이다.

출력

  • 각 테스트 케이스는 한 라인에 a<=fi<=b. 의 피보노치 수의 개수를 출력 한다.
맛보기 코드


맛보기 사진

여담

  • 최대 100 자리수까지 고려해야 하므로, C 에선 문자열로 처리해 주어야 한다.
  • JAVA 에선 BigInteger 클래스를 이용하면, 100 자리수도 계산할 수 있다.
  • 피보노치 수를 테이블 표로 만들고, 이 표의 범위로 개수를 찾는 방법으로 푼 것을 보았다.(재미있었다.)
  • 어려운건 없었다.

:wq!

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 라이프코리아트위터 공유하기
  • shared
  • 카카오스토리 공유하기