n이라는 숫자가 있다고 가정합니다. n이 피보나치 수열에 존재하는지 여부를 확인해야 합니다. 피보나치 수열에서 알 수 있듯이 f(i) =f(i-1) + f(i-2)는 2에서 n까지의 각 i에 대해 f(0) =0, f(1) =1입니다.
따라서 입력이 n =13과 같으면 피보나치 수열의 일부 항이 0, 1, 1, 2, 3, 5, 8, 13, 21, 34이므로 34가 존재하므로 출력은 True가 됩니다. .
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- 파이:=0.5 + 0.5 * (5.0)의 제곱근
- a :=파이 * n
- n이 0과 같거나 a가 정수인 경우 true를 반환
예시
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
from math import sqrt def solve(n): phi = 0.5 + 0.5 * 5.0**0.5 a = phi * n return n == 0 or abs(round(a) - a) < 1.0 / n n = 13 print(solve(n))
입력
13
출력
True