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 次浏览

开启你的 职业

通过完成课程来获得认证

开始
广告