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

C++에서 75%를 유지하기 위해 최소 수강 강의 수를 찾는 프로그램

<시간/>

이 문제에서 현재 데이터까지 보유된 총 수업 수와 학생이 참석한 수업 수를 각각 나타내는 두 개의 숫자 M과 N이 제공됩니다. 우리의 임무는 C++에서 75%를 유지하기 위해 참석해야 하는 최소 강의 수를 찾는 프로그램을 만드는 것입니다.

문제 설명

이것은 75%의 출석률을 유지하는 대학생들의 가장 큰 관심사 중 하나입니다. 이 프로그램은 출석률 75%를 달성하기 위해 학생이 정기적으로 출석해야 하는 최소 강의 수를 계산합니다.

문제를 이해하기 위해 예를 들어 보겠습니다.

예시 1

입력 :M =32, N =20

출력 :16

설명

최소 75% 출석률을 달성하려면 학생은 최소 16개의 강의에 참석해야 합니다. 총 48개의 강의와 36개의 강의를 듣게 됩니다.

백분율 =36*100/48 =75%

예시 1

입력 :M =14, N =4

출력 :26

설명

최소 75% 출석률을 달성하려면 학생은 최소 26개의 강의에 참석해야 합니다. 이렇게 하면 총 강의 40개, 참석 강의 30개가 됩니다.

백분율 =30*100/40 =75%

솔루션 접근 방식

여기에서 학생이 참석해야 하는 강의 수를 찾아야 합니다. 한 가지 간단한 방법은 양쪽에 하나의 강의를 추가하고 나눗셈이 0.75 이상이면 추가를 중지하고 반복자의 값을 반환하는 것입니다.

우리 솔루션의 작동을 설명하는 프로그램

예시

#include <iostream>
using namespace std;
int maintainAtt(int M, int N) {
   int att = 0; while(1){
      if(((N+att)*100)/(M+att) >= 75){
         return att;
      }
      att++;
   }
}
int main() {
   int M = 23, N = 12;
   cout<<"The total number of lectures to be attended is "<<maintainAtt(M, N);
   return 0;
}

출력-

The total number of lectures to be attended is 21

이 접근 방식은 O(n) 차수의 솔루션의 시간 복잡도를 만드는 루프를 사용합니다. 그러나 계산에 대한 수학 공식을 사용하여 O(1) 시간 복잡도에서 이를 수행할 수 있습니다.

75% 출석률을 유지하기 위해 참석해야 하는 최소 강의 수식은 다음과 같습니다.

$$\square\square\square\square\left(\frac{(0.75)+\square-\square}{0.25}\right)$$

우리 솔루션의 작동을 설명하는 프로그램

예시

#include <iostream>
#include <math.h>
using namespace std;
int maintainAtt(int M, int N) {
   int att = ceil(((0.75*M) - N)/(0.25)); return att;
}
int main() {
   int M = 30, N = 11;
   cout<<"The total number of lectures to be attended is "<<maintainAtt(M, N);
   return 0;
}

출력

The total number of lectures to be attended is 46