B. Random Teams
time limit per test 1 second
memory limit per test 256 megabytes
input standard input
output standard output

n participants of the competition were split into m teams in some manner so that each team has at least one participant. After the competition each pair of participants from the same team became friends.

Your task is to write a program that will find the minimum and the maximum number of pairs of friends that could have formed by the end of the competition.

Input

The only line of input contains two integers n and m, separated by a single space (1 ≤ m ≤ n ≤ 109) — the number of participants and the number of teams respectively.

Output

The only line of the output should contain two integers kmin and kmax — the minimum possible number of pairs of friends and the maximum possible number of pairs of friends respectively.

Sample test(s)
input
5 1
output
10 10
input
3 2
output
1 1
input
6 3
output
3 6
Note

In the first sample all the participants get into one team, so there will be exactly ten pairs of friends.

In the second sample at any possible arrangement one team will always have two participants and the other team will always have one participant. Thus, the number of pairs of friends will always be equal to one.

In the third sample minimum number of newly formed friendships can be achieved if participants were split on teams consisting of 2 people, maximum number can be achieved if participants were split on teams of 1, 1 and 4 people.

n个人分到m组里,每一组对于答案的贡献是人数排列组合,就是n*(n-1)/2。求最大值和最小值

显然前面取m-1组的1最后一组最大的方案是答案最大

平均分的方案是答案最小

 #include<cstdio>
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<cmath>
#include<queue>
#include<deque>
#include<set>
#include<map>
#include<ctime>
#define LL long long
#define inf 0x7ffffff
#define pa pair<int,int>
#define pi 3.1415926535897932384626433832795028841971
using namespace std;
inline LL read()
{
LL x=,f=;char ch=getchar();
while(ch<''||ch>''){if(ch=='-')f=-;ch=getchar();}
while(ch>=''&&ch<=''){x=x*+ch-'';ch=getchar();}
return x*f;
}
LL a,b,c,d,e;
int main()
{
a=read();b=read();
c=(a-b+)*(a-b)/;
d=(a-b*(a/b));
e=(d)*(a/b+)*(a/b)/+(b-d)*(a/b)*(a/b-)/;
printf("%lld %lld\n",e,c);
}

cf478B

最新文章

  1. gulp操作基本功能.md
  2. phpstorm 配置 babel 支持EcmaScript6
  3. Myeclipse 2015 stable 2.0 完美破解方法
  4. xpath提取目录下所有标签内的内容,递归 //text()
  5. poj 2449 Remmarguts&#39; Date K短路+A*
  6. (转)android底部弹出iOS7风格对话选项框(QQ对话框)--第三方开源--IOS_Dialog_Library
  7. Apache服务器 配置多个网站解决方案
  8. Unix/Linux环境C编程入门教程(21) 各个系统HelloWorld跑起来效果如何?
  9. Cassandra存储time series类型数据时的内部数据结构?
  10. winform中的 datagriview 字段自动填充长度
  11. C语言实现数据结构中的堆创建,堆排序
  12. c++模板文件,方便调试与运行时间的观察
  13. JMter随记
  14. 亲和串 kmp
  15. 详解PHP操作Memcache缓存技术提高响应速度的方法
  16. Linux终端执行shell脚本,提示权限不够的解决办法
  17. DLL入门
  18. POJ2356 Find a multiple 抽屉原理(鸽巢原理)
  19. 【Python】百度贴吧-中国好声音评论爬爬【自练OK-csv提取格式及评论提取空格等问题待改进】
  20. Jsoup简介

热门文章

  1. Palindrome Subarrays
  2. hdu3870-Catch the Theves(平面图最小割)
  3. 【shell】构造并遍历二位数组的一种用法
  4. Hive 2、Hive 的安装配置(本地MySql模式)
  5. ps&amp;&amp;/proc/pid/xxx
  6. Android Call requires API level 11 (current min is 8)的解决方案
  7. 《Java程序员面试笔试宝典》之为什么Java中有些接口没有任何方法
  8. 五分钟读懂UML类图
  9. blockUI
  10. VBA清除Excelpassword保护,2003/2007/2010均适用