समस्या कथन
एक टेस्ट में N प्रश्न और कक्षा में K छात्र दिए गए हैं। K छात्रों के बैच में से, N छात्रों ने ठीक एक-एक प्रश्न याद किया है। एक मेल में अधिकतम X प्रश्न हो सकते हैं।
न्यूनतम मेल की संख्या ढूंढें ताकि पूरी कक्षा को सभी प्रश्नों के बारे में पता चल जाए।
यदि N=3, K=3, X=1, तो 6 मेल भेजने होंगे:
- छात्र 1 अपना प्रश्न छात्र 2 और छात्र 3 को भेजता है (2 मेल)
- इसी तरह छात्र 2 और छात्र 3 भी करते हैं, कुल मेल = 2 * 3 = 6
एल्गोरिदम
अंतिम उत्तर की गणना नीचे दिए गए सूत्र का उपयोग करके की जा सकती है:
ceil(N/X) * (K-N) + (ceil((N-1)/X)) * (N-1) + (N-1)
C++ उदाहरण
#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, students = 3, X = 1;
cout << "No of mails to be sent: " << minMailsToBeSent(questions, students, X) << endl;
return 0;
}
आउटपुट
No of mails to be sent: 6