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

C++에서 n명으로 구성된 m팀의 최소 및 최대 쌍 수

<시간/>

문제 설명

N 대회 참가자는 M으로 분할되었습니다. 각 팀에는 최소한 한 명의 참가자가 있도록 어떤 방식으로 팀을 구성해야 합니다. 대회가 끝난 후 같은 팀의 각 참가자 쌍은 친구가 되었습니다.

당신의 임무는 대회가 끝날 때까지 형성될 수 있는 친구 쌍의 최소 및 최대 수를 찾는 프로그램을 작성하는 것입니다.

알고리즘

1. We can obtain max pairs using below formula:
maxPairs = ((n – m) * (n – m + 1)) / 2
2. We can obtain min pairs using below formula:
minPairs = m * (((n - m) / m + 1) * ((n - m) / m)) / 2 + ceil((n - m) / double(m)) * ((n - m) % m);

예시

#include <iostream>
#include <cmath>
using namespace std;
void getPairs(int n, int m){
   int maxPairs = ((n - m + 1) * (n - m)) / 2;
   int minPairs = m * (((n - m) / m + 1) * ((n - m) / m)) / 2 + ceil((n - m) / double(m)) * ((n - m) % m);
   cout << "Minimum pairs = " << minPairs << "\n";
   cout << "Maximum pairs = " << maxPairs << "\n";
}
int main(){
   getPairs(3, 2);
   return 0;
}

출력

위의 프로그램을 컴파일하고 실행할 때. 다음 출력을 생성합니다-

Minimum pairs = 1
Maximum pairs = 1