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

C++-এ N কাটা দিয়ে সর্বোচ্চ টুকরো বের করা


দেওয়া কাজ হল একটি দেওয়া বর্গাকার টুকরোকে মোট N সংখ্যক কাটা দিয়ে (হরিজন্টাল বা ভার্টিকাল) সমান আকারের বর্গ বা আয়তাকার সর্বোচ্চ কতটি টুকরোতে ভাগ করা যায় তা ক্যালকুলেট করা।

উদাহরণ দিয়ে বোঝা যাক

ইনপুট - N=8

আউটপুট - ২৫

ব্যাখ্যা - N=8 হলে, ভার্টিকাল কাটা = ৪ এবং হরিজন্টাল কাটা = ৪। মোট টুকরো = ২৫

12345
678910
1112131415
1617181920
2122232425

ইনপুট - ৭

আউটপুট - ২০

12345
678910
1112131415
1617181920

প্রোগ্রামে ব্যবহৃত পদ্ধতি

  • যদি N কাটার সংখ্যা হয় এবং আমাদের ফলাফলের টুকরো ম্যাক্সিমাইজ করতে হয়, তবে সমান সংখ্যক হরিজন্টাল এবং ভার্টিকাল কাটা দিতে হবে।

    যদি N জোড় হয় তবে সমান হরিজন্টাল ও ভার্টিকাল কাটা হবে, অন্যথায় যদি N বিজোড় হয়, তবে হরিজন্টাল কাটা ভার্টিকাল কাটার চেয়ে ১টি বেশি হবে বা بالعکس।

    তাই, হরিজন্টাল কাটার সংখ্যা = N/2 এবং ভার্টিকাল কাটার সংখ্যা = N-H।

  • MaxPieces() ফাংশনে H = N/2 ইন্টিজার ভেরিয়েবল আরম্ভ করুন হরিজন্টাল কাটার সংখ্যা সংরক্ষণ করার জন্য।

  • V = N-H ইন্টিজার ভেরিয়েবল আরম্ভ করুন ভার্টিকাল কাটার সংখ্যা সংরক্ষণ করার জন্য।

  • ফাইনাল টুকরোর সংখ্যা = (হরিজন্টাল সারি) * (ভার্টিকাল সারি) = (H+1) * (V+1)

C++ প্রোগ্রাম উদাহরণ

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

int MaxPieces(int N){
    // H হল হরিজন্টাল কাটার সংখ্যা
    int H = N / 2;
    // V হল ভার্টিকাল কাটার সংখ্যা
    int V = N - H;
    // সর্বোচ্চ টুকরোর সংখ্যা = (H+1)*(V+1)
    return ((H + 1) * (V + 1));
}

// মেইন ফাংশন
int main(){
    // কাটার সংখ্যা
    int N = 7;
    cout << "Max pieces = "<<MaxPieces(N);
    return 0;
}

আউটপুট

20
  1. Frugal সংখ্যা চেক করা (C++)

  2. C++ দিয়ে পেন্টাটপ (Pentatope) সংখ্যা বের করা

  3. C++ দিয়ে সর্বোচ্চ বেণ্ড (Bends) Barney পথের দৈর্ঘ্য বের করা

  4. N কাটা দিয়ে বৃত্তের টুকরোর সংখ্যা গণনা C++-এ