두 개의 숫자 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