সমস্যা বিবরণ
একটি টেস্টে 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