Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++를 사용하여 모든 질문을 배포하는 데 필요한 최소 메일 수입니다.

<시간/>

문제 설명

시험에 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