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

更新於:2019 年 10 月 23 日

241 次瀏覽

開啟你的 職業

透過完成課程來獲得認證

開始
廣告