समस्या विवरण
N प्रतिभागियों को M टीमों में बांटा गया (प्रत्येक टीम में कम से कम 1)। एक ही टीम के सभी प्रतिभागी मित्र बन जाते हैं। न्यूनतम और अधिकतम मित्र जोड़ियों की संख्या ज्ञात करें।
सूत्र
अधिकतम जोड़ियां: एक टीम में अधिकतम लोग रखें
maxPairs = (n - m + 1) * (n - m) / 2
न्यूनतम जोड़ियां: लोगों को यथासंभव समान रूप से बांटें
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