তিনটি সংখ্যা a, b, c দেওয়া আছে। প্রতিটি ধাপে किन्हু দুটি সংখ্যা থেকে ১ বিয়োগ করতে হবে। সবগুলো শূন্য করার জন্য সর্বনিম্ন ধাপ বের করুন।
অ্যালগরিদম
- সবচো বড় দুটি সংখ্যা থেকে ১ বিয়োগ করলে ধাপ কম লাগে।
- সার্ট করে সবচো বড় দুটি বের করুন বা লজিক: যদি a+b > c হয়, তবে a,b থেকে বিয়োগ করুন।
- যখন a+b ≤ c হয়, তখন বাকি ধাপ = min(c, a+b)।
উদাহরণ
a=4, b=4, c=6 → ৭ ধাপ
(4,4,6)→(3,3,6)→(2,3,5)→(1,3,4)→(0,3,3)→(0,2,2)→(0,1,1)→(0,0,0)
উদাহরণ কোড
#include <bits/stdc++.h>
using namespace std;
int maxSteps(int a, int b, int c) {
int steps = 0;
while (a + b > c && a > 0 && b > 0) {
a--; b--; steps++;
}
steps += min(c, a + b);
return steps;
}
int main() {
cout << maxSteps(4, 4, 6) << endl; // 7
return 0;
}
আউটপুট
7