-3 বাইট -1 বাইট ধন্যবাদ পাইপ্রেটবেকে ধন্যবাদ
-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)
লেমা ঘ
ফিবোনাকির মতো সিকোয়েন্সগুলির মধ্যে পার্থক্যটি হ'ল ফিবোনাকির মতো, অর্থাৎ 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
ডাব্লুএলজি অনুমান 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
এই সমাধানগুলির ন্যূনতমতা লেমামা 2 এর সাথে স্ববিরোধী।
কেস ২ k0 != k1
:
ডাব্লুএলজিও ধরে নিই 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)
(লেমামা 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
এটি লেমাকে 2 এর বিপরীতে।
a>=0
এবংa<b
কখনও একাধিক সমাধান হয়?