题意:有N个人,你要把他们分成K个队伍,每两个队伍之间每两个人都会打一架,请你求出最后分配完最多一共要打几场。
思路:小学学过和相同时越接近积越大,每个队伍分配(n/k)下取整个人,多余的前几个队伍每个分配一个人就行了,然后n^2暴力求打架的次数。
AC程序
using namespace std;
int n,t;
vector<int> v;
int main()
{
int tests;
cin>>tests;
while(tests--)
{
cin>>n>>t;
v.clear();
int a=n/t,b=n%t;
for(int i=0;i<t;i++)
{
int tt=a;
if(b)
{
tt++;
b--;
}
v.pb(tt);
}
int sz=v.size();
ll ans=0;
for(int i=0;i<sz;i++)
{
for(int j=i+1;j<sz;j++)
{
ans+=(v[i]*v[j]);
}
}
cout<<ans<<endl;
}
return 0;
}