-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
আবারও DIFF2 টি ইতিবাচক পদ রয়েছে এবং সুতরাং পরবর্তী সমস্ত পদ ইতিবাচক।
সুতরাং, শুধুমাত্র সময় যখন এটা সম্ভব যে DIFF(k) = 0হয় k = 1, তাই শুধু পছন্দ k0হয় 1।
FIB(a0,b0,1) = n
b0 = n
এটি লেমাকে 2 এর বিপরীতে।
a>=0এবংa<bকখনও একাধিক সমাধান হয়?