nটি পূর্ণ বিয়ার বোতল দেওয়া আছে। ৩টি খালি বোতল দিয়ে ১টি পূর্ণ বোতল বিনিময় করা যায়। সর্বোচ্চ কতটি বোতল পिया যায় তা বের করুন।
উদাহরণ
ইনপুট: n = 10
প্রক্রিয়া:
- ১০টি পান → ১০টি খালি
- ৯টি খালি দিয়ে ৩টি পূর্ণ পাওয়া → ৩টি পান → ৪টি খালি (১টি বাকি + ৩টি নতুন)
- ৩টি খালি দিয়ে ১টি পূর্ণ পাওয়া → ১টি পান → ২টি খালি
- মোট = ১০ + ৩ + ১ = 14
C++ বাস্তবায়ন
#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
int solve(int n) {
int ret = 0;
while (n >= 3) {
int q = n / 3;
ret += q * 3;
n = n - q * 3 + q;
}
ret += n;
return ret;
}
};
int main() {
Solution ob;
cout << ob.solve(10);
return 0;
}
গাণিতিক সূত্র
সাধারণত, nটি বোতল এবং kটি খালি দিয়ে ১টি বিনিময় হলে, মোট পান করা যাবে: n + (n-1)/(k-1)। এখানে k=3, তাই 10 + 9/2 = 14।
ইনপুট ও আউটপুট
ইনপুট: 10
আউটপুট: 14