ThePirateBay 덕분에 -3 바이트 -1 바이트
Neil 덕분에 -8 -9 바이트.
f=(n,a=1,b=0,c=(a,b)=>b<n?c(a+b,a):b>n)=>c(a,b)?b+2<a?f(n,a-1,b+1):f(n,b-~a):[b,a]
온라인으로 사용해보십시오!
참고 :이 솔루션은 여러 개의 최소 솔루션이 없다는 사실에 의존합니다.
여러 솔루션이 없다는 증거 :
하자 FIB(a,b,k)
로 시작하는 피보나치 같은 순서 수 a,b
:
FIB(a,b,0) = a
FIB(a,b,1) = b
FIB(a,b,k) = FIB(a,b,k-1) + FIB(a,b,k-2)
렘마 1
피보나치 유사 서열의 차이는 그 자체가 피보나치 유사 FIB(a1,b1,k) - FIB(a0,b0,k) = FIB(a1-a0,b1-b0,k)
이다. 증거는 독자에게 맡겨져 있습니다.
렘마 2
의 경우 다음을 만족 n >= 5
하는 솔루션 a,b
이 있습니다 a+b < n
.
경우 n
도있다FIB(0,n/2,3) = n
이 경우 n
, 홀수FIB(1,(n-1)/2,3) = n
증명
n < 5
철저하게 확인할 수있는 사례 .
우리가이 개 최소한의 솔루션을 가지고 가정 n >= 5
, a0,b0
그리고 a1,b1
함께 a0 + b0 = a1 + b1
하고 a0 != a1
.
그런 존재 k0,k1
가 같은 FIB(a0,b0,k0) = FIB(a1,b1,k1) = n
.
사례 1 : k0 = k1
가정 WLOG b0 < b1
(따라서 a0 > a1
)
하자 DIFF(k)
의 차이점 할 것을 Fibonnaci-등으로 시작하는 시퀀스 a1,b1
및 a0,b0
:
DIFF(k) = FIB(a1,b1,k) - FIB(a0,b0,k) = FIB(a1-a0,b1-b0,k)
(레마 1)
DIFF(0) = a1 - a0 < 0
DIFF(1) = b1 - b0 > 0
DIFF(2) = (a1+b1) - (a0+b0) = 0
DIFF(3) = DIFF(1) + DIFF(2) = DIFF(1) > 0
DIFF(4) = DIFF(2) + DIFF(3) = DIFF(3) > 0
피보나치 유사 서열에 2 개의 긍정적 인 용어가 있으면 모든 후속 용어는 긍정적입니다.
따라서 유일한 시간 DIFF(k) = 0
은 언제 k = 2
이므로 유일한 선택은 k0 = k1
입니다 2
.
따라서 n = FIB(a0,b0,2) = a0 + b0 = a1 + b1
이 솔루션의 최소 성은 Lemma 2와 모순됩니다.
사례 2 : k0 != k1
:
WLOG는 가정 k0 < k1
합니다.
우리는 FIB(a1,b1,k1) = n
방해 a2 = FIB(a1,b1,k1-k0)
방해 b2 = FIB(a1,b1,k1-k0+1)
그런 다음 FIB(a2,b2,k0) = FIB(a1,b1,k1) = FIB(a0,b0,k0)
(독자 운동)
에 FIB(a1,b1,k)
대해 음수 k >= 0
가 아니므로 감소하지 않습니다.
이것은 우리를 제공 a2 >= b1 > a0
하고 b2 >= a1+b1 = a0+b0
.
그럼 DIFF(k) = FIB(a2,b2,k) - FIB(a0,b0,k) = FIB(a2-a0,b2-b0,k)
(Lemma 1)
DIFF(0) = a2 - a0 > 0
DIFF(1) = b2 - b0 >= (a0 + b0) - b0 = a0 >= 0
DIFF(2) = DIFF(0) + DIFF(1) >= DIFF(0) > 0
DIFF(3) = DIFF(1) + DIFF(2) >= DIFF(2) > 0
다시 한번, DIFF
2 개의 긍정적 인 용어가 있으므로 모든 후속 용어는 긍정적입니다.
따라서 가능한 유일한 시간 DIFF(k) = 0
은 k = 1
이므로 유일한 선택은 k0
입니다 1
.
FIB(a0,b0,1) = n
b0 = n
이것은 Lemma 2와 모순됩니다.
a>=0
및a<b
이제까지 여러 솔루션이 있습니까?