题意:
n个人分成m组,每组里每两个人存在一段友谊,问最少和最多的友谊数是多少?
解析:
根据样例,k个人的组的友谊数是,是平方级别的,所以最多就是把人数尽量聚集到一个组里,剩余组留1人;最少就是尽量把人进行平分。
代码:
#include<bits/stdc++.h>
using namespace std;
long long n,m;
long long k1,k2;
long long get(long long x)
{
return x*(x-1)/2;
}
int main()
{
cin>>n>>m;
long long tmp=n-m+1;
k2=get(tmp);
if(n%m==0){
k1=get(n/m)*m;
}else{
k1=get(n/m+1)*(n%m)+get(n/m)*(m-n%m);
}
cout<<k1<<' '<<k2<<endl;
return 0;
}
收获:
还是要注意数据范围,涉及到long long 的就尽量全开ll。