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

콘테스트에서 다른 승자와 비우승자 수를 찾는 C++ 코드

<시간/>

두 개의 숫자 n과 k가 있다고 가정합니다. 한 대회에 n명의 학생이 있습니다. 그들 중 일부는 기념품을 받고, 일부는 인증서를 받고, 나머지는 아무것도 받지 못할 것입니다. 무언가를 받는 사람을 승자라고 합니다. 그러나 유품과 인증서의 수를 세는 몇 가지 규칙이 있습니다. 인증서 수는 기념품 수보다 정확히 k배 커야 합니다. 우승자의 수는 n/2보다 크지 않아야 합니다. 승자가 없을 수도 있습니다. 이 규칙에 따라 가능한 최대 승자 수를 식별해야 합니다. 그런 다음 기념품이 있는 학생 수, 수료증이 있는 학생 수 및 수상자가 아닌 학생 수를 찾으십시오.

따라서 입력이 n =18과 같으면; k =2이면 출력은 [3, 6, 9]가 됩니다.

단계

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

x := (n / 2) / (1 + k)
return x, (k * x) and (n - (x + (k * x)))

예시

이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

#include <bits/stdc++.h>
using namespace std;
void solve(int n, int k){
   int x = (n / 2) / (1 + k);
   cout << x << ", " << (k * x) << ", " << (n - (x + (k * x)));
}
int main(){
   int n = 18;
   int k = 2;
   solve(n, k);
}

입력

8, 2

출력

3, 6, 9