题目说明:有n个人分成了k组,不同组的人两两对打,要求对打局数最大。
题目解析:每组约平均得出结果越大,sum过程纯属数学计算过程。
Problem Analysis English version: We can easily notice from math calculations that the more average of each group, the bigger number we will get.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
#include<iostream> #include<cmath> using namespace std; int main() { int ii; cin >> ii; int n, k, sum; for (int i = 0; i < ii; i++) { cin >> n; cin >> k; int group = n / k; int rest = n % k; sum = group * group * (k - 1) * k / 2 + rest * (rest - 1) / 2 + rest * (k - 1) * group; cout << sum << endl; } return 0; } |