কম্পিউটার টিউটোরিয়াল

C++-এ বিয়ার বোতল সমস্যা: খালি বোতল বিনিময়

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

  1. C++-এ জাম্প গেম V (Jump Game V)

  2. সি++-এ বিউটিফুল অ্যারে (Beautiful Array)

  3. C++-এ K ডিজিট রিমুভ করে সবচেয়ে ছোট সংখ্যা বানানো

  4. C++-এ ফোর ডিভাইজারস (Four Divisors) সমস্যা সমাধান