คำชี้แจงปัญหา
ให้ 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)
ตัวอย่าง
#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