문제 설명
시험에 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