字节跳动2019笔试:立方体塔(超详细的解法!!!)

该博客详细介绍了字节跳动2019年笔试中的一道题目,即如何用白色和黑色立方体堆成一个立方体塔,使得塔尽可能高且每层颜色单一。博主给出了如何计算最大高度和不同塔的种类数的方法,并证明了一个关键性质,帮助解决这个问题。解题思路涉及等差数列求和、组合计数等概念。
摘要由CSDN通过智能技术生成

小方有w个白色立方体和b个黑色立方体,现在小方想把它们堆成一个立方体塔。

一座高度为h的立方体塔,最底层有h个立方体,每往上一层,所需立方体减一,直到最高层只需要一个立方体。

为了让这座塔看起来美观,小方希望,每一层都只能用一种颜色的立方体。

小方希望把这座塔叠的尽可能高,因此他想知道塔的最大高度是多少,以及这个高度的立方体塔能有几种。

两种立方体塔,当且仅当至少有一层的颜色是不同的,则被认为是不同的。

输入格式

共一行,包含两个整数w和b。

输出格式

共一行,包含两个整数h和c,分别表示最高塔的高度以及此高度塔的种类数。

因为种类数可能较多,请将c对 1 0 9 + 7 10^9+7 109+7取模后的值输出。

数据范围

0 ≤ w , b ≤ 1 0 5 0≤w,b≤10^5 0w,b105

输入样例

1 1

输出样例

1 2

解题思路

首先我们计算一下不考虑颜色的情况下最大高度(理论高度)是多少,这是一个等差数列求和问题

  • ( 1 + h ) ∗ h 2 ≤ ( w + b ) \frac{(1+h)*h}{2}\leq(w+b) 2(1+h
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值