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

C++ ব্যবহার করে সব প্রশ্ন বিতরণের জন্য ন্যূনতম মেইল সংখ্যা

সমস্যা বিবরণ

একটি টেস্টে Nটি প্রশ্ন এবং ক্লাসে Kজন ছাত্র দেওয়া আছে। K ছাত্রের মধ্যে Nজন প্রতিটি ঠিক একটি প্রশ্ন মনে করল। একটি মেইলে সর্বোচ্চ Xটি প্রশ্ন পাঠানো যাবে।

সমস্ত ক্লাসের সব প্রশ্ন জানতে ন্যূনতম কতগুলো মেইল পাঠাতে হবে তা বের করুন।

যদি N = 3, K = 3, X = 1 হয়, তবে ৬টি মেইল পাঠাতে হবে:

  • ছাত্র ১ তার প্রশ্ন ছাত্র ২ এবং ছাত্র ৩ কে পাঠাল (২টি মেইল)
  • ছাত্র ২ এবং ছাত্র ৩ও একইভাবে করল, মোট মেইল = ২ × ৩ = ৬

এলগরিদম

চূড়ান্ত উত্তর নিচের ফর্মুলা দিয়ে বের করা যায়:

ceil(N/X) * (K-N) + (( ceil((N-1)/X)) * (N-1)) + (N-1)

উদাহরণ কোড

#include <iostream>
#include <cmath>
using namespace std;

int minMailsToBeSent(int n, int k, int x) {
    int m = (n - 1) + ceil((n - 1) * 1.0 / x) * (n - 1) + ceil(n * 1.0 / x) * (k - n);
    return m;
}

int main() {
    int questions = 3;
    int students = 3;
    int X = 1;
    cout << "No of mails to be sent: " << minMailsToBeSent(questions, students, X) << endl;
    return 0;
}

আউটপুট

প্রোগ্রাম কম্পাইল ও এক্সিকিউট করলে নিচের আউটপুট পাওয়া যাবে:

No of mails to be sent: 6
  1. C++ ব্যবহার করে পেন্টাগোনাল পিরামিডাল সংখ্যা নির্ণয় করুন

  2. C++ দিয়ে একটি স্ট্রিংয়ের সাবস্ট্রিং-এর সংখ্যা বের করা

  3. C++-এ ট্রেন স্টপেজ স্টেশন সংখ্যা বের করুন

  4. C++-এ প্রতিপক্ষকে ধরতে ন্যূনতম রাউন্ড সংখ্যা বের করা