nจান বাইক আছে, প্রতিটি পূর্ণ ট্যাঙ্কে ১০০ কিমি চলে। সব বাইক একসাথে শুরু করলে শুধু ১০০ কিমি যাওয়া যায়। কিন্তু যদি বাইকগুলো সিরিয়ালি (serial) চালানো হয় এবং ইंधন ট্রান্সফার করা হয়, তবে বেশি দূরত্ব আওতা করা যায়। লক্ষ্য হলো ন্যূনতম বাইক ও ইন্ধন ব্যবহার করে সর্বোচ্চ দূরত্ব আওতা করা।
উদাহরণ
ইনপুট: n = 3, fuel = 100
আউটপুট: 183.33
ব্যাখ্যা: প্রথমে ৩টি বাইক ৩৩.৩৩ কিমি চলে, একটির ইন্ধন বাকি দুটিতে ভরায়। তারপর ২টি বাইক ৫০ কিমি চলে, একটির ইন্ধন অন্যটিতে ভরায়। শেষে ১টি বাইক ১০০ কিমি চলে। মোট = ৩৩.৩৩ + ৫০ + ১০০ = ১৮৩.৩৩ কিমি।
সমাধানের পদ্ধতি
- প্রতিটি ধাপে বাকি বাইকগুলোর মধ্যে ইंधন সমানভাবে বাঁটানো হয়।
- i-তম ধাপে (n-i+1) জানে বাইক থাকে, তাই প্রতিটি fuel/(n-i+1) দূরত্ব চলে।
- সর্বোচ্চ দূরত্ব = Σ (fuel / i) for i = n down to 1
- এটি হায়ারমনিক সিরিজ (Harmonic Series) এর মতো।
পাইথন কোড
def maximum_distance(n, fuel):
covered_distance = 0
while n > 0:
covered_distance += fuel / n
n -= 1
return covered_distance
n = 3
fuel = 100
print(maximum_distance(n, fuel))
ইনপুট
3, 100
আউটপুট
183.33333333333334