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

C++-এ আয়তাকার কাটিয়ে ন্যূনতম এলিমেন্টের সর্বোচ্চ এলাকা বের করার প্রোগ্রাম


সমস্যা বিবরণ

একটি আয়তের দৈর্ঘ্য-প্রস্থ (n, m) এবং কাটার সংখ্যা (k) দেওয়া থাকলে, ঠিক kবার কাটা দিয়ে তৈরি হয়েছে সবচেয়ে ছোট টুকরোর এলাকা সর্বোচ্চ কত হতে পারে তা বের করুন।

সমাধানের পদ্ধতি

  1. যদি k > (n + m - 2) হয়, তবে "Not possible" (কাটার সংখ্যা বেশি)।
  2. যদি k < max(m, n) - 1:
    • একদিকেই সব কাটা দিন: max(m * (n/(k+1)), n * (m/(k+1)))
  3. অন্যথায় (দুইদিকে কাটা লাগবে):
    • max(m / (k - n + 2), n / (k - m + 2))

C++ কোড উদাহরণ

#include <bits/stdc++.h>
using namespace std;

void max_area(int n, int m, int k) {
    if (k > (n + m - 2))
        cout << "Not possible" << endl;
    else {
        int result;
        if (k < max(m, n) - 1) {
            result = max(m * (n / (k + 1)), n * (m / (k + 1)));
        } else {
            result = max(m / (k - n + 2), n / (k - m + 2));
        }
        cout << result << endl;
    }
}

int main() {
    int n = 3, m = 4, k = 1;
    max_area(n, m, k);
    return 0;
}

আউটপুট

6

ব্যাখ্যা

n=3, m=4, k=1। max(m,n)-1 = 3। k=1 < 3, তাই প্রথম শর্তে।

m * (n/(k+1)) = 4 * (3/2) = 4*1 = 4

n * (m/(k+1)) = 3 * (4/2) = 3*2 = 6 → সর্বোচ্চ 6

জটিলতা

  • সময়: O(1)
  • স্থান: O(1)
  1. C++-এ N*N চেসবোর্ডে সর্বোচ্চ বিশপ বসানো

  2. C++-এ একটি দিয়ে দেয়া সংখ্যার অঙ্ক ব্যবহার করে সর্বোচ্চ সংখ্যা নির্ণয়

  3. C++-এ দেওয়া গুণফল দিয়ে N পূর্ণসংখ্যার সর্বোচ্চ GCD

  4. C++-এ দিয়ে অর্ডারড ভের্টেক্সসহ পলিগনের ক্ষেত্রফল বের করা