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

C-তে k ছাত্রের মধ্যে সমানভাবে বিতরণের জন্য সর্বোচ্চ চকলেট সংখ্যা নির্ণয়

সেকেন্ডারি বক্সগুলিতে চকলেটের সংখ্যা একটি অ্যারে আকারে দেওয়া আছে এবং k ছাত্রের মধ্যে এগুলো সমানভাবে বিতরণ করতে হবে। liên tiếp বক্স নির্বাচন করতে হবে যাতে চকলেটের যোগফল k দিয়ে বিভাজ্য হয় এবং এই যোগফল সর্বোচ্চ হয়। অর্থাৎ k দিয়ে বিভাজ্য সর্বোচ্চ যোগফল वाले সাবঅ্যারে খুঁজে বের করতে হবে।

উদাহরণ

ইনপুট: Choco[] = { 1, 2, 4, 5, 2, 8, 3, 5 }, k = 3

আউটপুট: প্রতি ছাত্র পাবে চকলেট - ৫

ব্যাখ্যা: সর্বোচ্চ যোগফল वाले সাবঅ্যারে {5, 2, 8}। যোগফল = ১৫। ১৫ ÷ ৩ = ৫। ইনডেক্স {3, 4, 5}।

ইনপুট: Choco[] = { 2, 3, 7, 5, 4, 8, 2, 6 }, k = 5

আউটপুট: ৭

ব্যাখ্যা: সাবঅ্যারে {3, 7, 5, 4, 8, 2, 6}। যোগফল = ৩৫। ৩৫ ÷ ৫ = ৭।

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

  • চকলেটের অ্যারে arr[] এবং বক্সের সংখ্যা n।
  • ছাত্রের সংখ্যা k ইনপুট নেওয়া হয়।
  • maxChocolates(int arr[], int n, int k) ফাংশনটি সর্বোচ্চ চকলেট হিসাব করে।
  • দুটি নেস্টেড লুপ দিয়ে সব সাবঅ্যারে ট্রাভার্স করা হয়।
  • sum ভেরিয়েবলে যোগফল রাখা হয়। যদি sum % k == 0 এবং sum > maxSum হয়, তবে maxSum আপডেট।
  • শেষে maxSum / k রিটার্ন করা হয় (প্রতি ছাত্রের চকলেট)।

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

#include <stdio.h>

int maxChocolates(int arr[], int n, int k) {
    int sum, maxSum = 0;
    for (int i = 0; i < n; i++) {
        sum = 0;
        for (int j = i; j < n; j++) {
            sum += arr[j];
            if (sum % k == 0 && sum > maxSum)
                maxSum = sum;
        }
    }
    return (maxSum / k);
}

int main() {
    int arr[] = {2, 7, 6, 1, 4, 5, 5, 3};
    int n = 8, k = 3;
    printf("প্রতি ছাত্র পাবে চকলেট: %d", maxChocolates(arr, n, k));
    return 0;
}

আউটপুট

প্রতি ছাত্র পাবে চকলেট: 11
  1. C++ দিয়ে সর্বোচ্চ বেণ্ড (Bends) Barney পথের দৈর্ঘ্য বের করা

  2. C++-এ সাবস্ট্রিং-এর সর্বোচ্চ ঘটনা গণনা

  3. C++-এ বাইপার্টাইট গ্রাফে সর্বোচ্চ এজ সংখ্যা

  4. পাইথন প্রোগ্রাম: তিন সংখ্যার মধ্যে সর্বোচ্চ (Maximum of Three)