C. Block Towers
                                                                                                                            time limit per test

2 seconds

                                                                                                                          memory limit per test

256 megabytes

                                                                                                                                   input

standard input

                                                                                                                                  output

standard output

Students in a class are making towers of blocks. Each student makes a (non-zero) tower by stacking pieces lengthwise on top of each other. n of the students use pieces made of two blocks and m of the students use pieces made of three blocks.

The students don’t want to use too many blocks, but they also want to be unique, so no two students’ towers may contain the same number of blocks. Find the minimum height necessary for the tallest of the students' towers.

Input

The first line of the input contains two space-separated integers n and m (0 ≤ n, m ≤ 1 000 000, n + m > 0) — the number of students using two-block pieces and the number of students using three-block pieces, respectively.

Output

Print a single integer, denoting the minimum possible height of the tallest tower.

Examples
input
1 3
output
9
input
3 2
output
8
input
5 0
output
10
Note

In the first case, the student using two-block pieces can make a tower of height 4, and the students using three-block pieces can make towers of height 3, 6, and 9 blocks. The tallest tower has a height of 9 blocks.

In the second case, the students can make towers of heights 2, 4, and 8 with two-block pieces and towers of heights 3 and 6 with three-block pieces, for a maximum height of 8 blocks.

题目大意:n个人两层两层的叠塔,m个人三层三层的叠塔,每个人塔的高度要唯一,问最小的情况所有塔中最大的塔高度

ac代码

 #include <bits/stdc++.h>
using namespace std;
int n,m;
bool check(int x)
{
int num1=x/;
int num2=x/;
int num3=x/;
if(num1<n)
return false;
if(num2<m)
return false;
if(n + m > num1 + num2 - num3)
return false;
return true;
}
int main()
{
scanf("%d%d",&n,&m);
int l=,r=1e7,ans=;
while(l<=r)
{
int mid=(l+r)/;
if(check(mid))
{
ans=mid;
r=mid-;
}
else l=mid+;
}
cout<<ans<<endl;
return ;
}

最新文章

  1. Collider Collision 区别
  2. Ceph常用维护操作
  3. Maven中手动引用第三方jar包
  4. ZooKeeper常见问题(转)
  5. 文件操作II
  6. Android开发-API指南-Content Provider
  7. 【图像算法】图像特征:GLCM灰度共生矩阵,纹理特征
  8. BZOJ 1227 虔诚的墓主人
  9. sigar监控
  10. BI名词解释
  11. 深入浅出Node.js (7) - 网络编程
  12. c 指针 及其位运算循环移动拔河比赛问题代码
  13. web富客户端应用下,前端架构问题。
  14. sql执行报错--This version of MySQL doesn&#39;t yet support &#39;LIMIT &amp; IN/ALL/ANY/SOME subquery&#39;
  15. python3之迭代器&amp;生成器
  16. 《java入门第一季》正则表达式小案例
  17. docker容器运行后退出,怎么才能一直运行?【转】
  18. matplotlib-区域填充
  19. luogu1966 火柴排队(离散化+树状数组)
  20. python 全栈开发,Day45(html介绍和head标签,body标签中相关标签)

热门文章

  1. hibernate核心API使用
  2. 初探XRebel
  3. HTML5 给图形绘制阴影(绘制五角星示例)
  4. Oracle ADG搭建
  5. Visual Studio 我的插件
  6. windows下查看端口占用情况及关闭相应的进程
  7. tomcat 设置jvm 参数
  8. 使用Word进行文档修订版本的比较
  9. 房上的猫:for循环,跳转语句与循环结构,跳转语句进阶
  10. 深入浅出Android之学习笔记