早教吧作业答案频道 -->其他-->
编程题倒水1.倒水题目描述一天,天天买了N个容量可以认为是无限大的瓶子,初始时每个瓶子里有1升水.天天发现瓶子实在太多了,于是他决定保留不超过K个瓶子.每次他选择两个当前
题目详情
编程题 倒水
1.倒水
【题目描述】
一天,天天买了 N 个容量可以认为是无限大的瓶子,初始时每个瓶子里有
1升水.天天发现瓶子实在太多了,于是他决定保留不超过K个瓶子.每次他选
择两个当前含水量相同的瓶子合并,把一个瓶子的水全部倒进另一个瓶,然后把
空瓶丢弃(不能丢弃有水的瓶子).
显然在某些情况下天天无法达到目标,比如N=3,K=1.此时天天会重新买
一些新的瓶子(新瓶子的容量无限,开始时有1升水),以达到目标.
现在天天想知道,最少需要买多少新瓶子才能达到目标?
【输入文件】
一行两个正整数N,K(1
1.倒水
【题目描述】
一天,天天买了 N 个容量可以认为是无限大的瓶子,初始时每个瓶子里有
1升水.天天发现瓶子实在太多了,于是他决定保留不超过K个瓶子.每次他选
择两个当前含水量相同的瓶子合并,把一个瓶子的水全部倒进另一个瓶,然后把
空瓶丢弃(不能丢弃有水的瓶子).
显然在某些情况下天天无法达到目标,比如N=3,K=1.此时天天会重新买
一些新的瓶子(新瓶子的容量无限,开始时有1升水),以达到目标.
现在天天想知道,最少需要买多少新瓶子才能达到目标?
【输入文件】
一行两个正整数N,K(1
▼优质解答
答案和解析
用位操作最为方便.首先问题核心思想是,每2^n个瓶子可以最终合并保留1个瓶子(一颗满二叉树),本题就变为N能写成最少多少项2的n次方的和的形式,有多少项就会最终剩多少瓶,要添加的瓶子数量就是要减少之前多项式的项数.比如198 = 128+64+4+2,尽可能合并后最终会剩4瓶.若最后需要保留3瓶,则只需加2,变成128+64+8.
用位操作,198二进制为1100 0110,里面有4个1.要保留3瓶,就是要找出一个含有3个1的二进制数,这个数应该是最小的大于198的数,即1100 1000.我们可以看出问题可以简化为从高往低第k位需要多少来进位:0110需要多少才能变成1000
代码:
public int compute2s(int num,int k){
int moved = 0;
int ones = 0;
while(ones < k){
if((num&0x40000000)!=0){
ones++;
if(ones == k)
break;
num -= 0x40000000;
}
num moved;
int upBond = 1;
while(upBond
用位操作,198二进制为1100 0110,里面有4个1.要保留3瓶,就是要找出一个含有3个1的二进制数,这个数应该是最小的大于198的数,即1100 1000.我们可以看出问题可以简化为从高往低第k位需要多少来进位:0110需要多少才能变成1000
代码:
public int compute2s(int num,int k){
int moved = 0;
int ones = 0;
while(ones < k){
if((num&0x40000000)!=0){
ones++;
if(ones == k)
break;
num -= 0x40000000;
}
num moved;
int upBond = 1;
while(upBond
看了 编程题倒水1.倒水题目描述一...的网友还看了以下:
有一玻璃瓶,它的质量为10g,当瓶内装满某种液体时,瓶和液体的总质量为40克.当瓶内装一金属块时, 2020-05-02 …
若有一只容积为3×10-4(三乘十的负四次方)m³的瓶内盛有0.2kg水,一只乌鸦每次把一个10g 2020-05-02 …
一个当一个立刀旁念什么?我在一本书上见到的这个字,不知道念什么!求大家帮帮忙! 2020-05-13 …
一个当一个立刀旁念什么? 2020-05-13 …
编程题倒水1.倒水题目描述一天,天天买了N个容量可以认为是无限大的瓶子,初始时每个瓶子里有1升水. 2020-05-13 …
一道关于浮力称的问题急科技小组的同学想利用刚学的浮力知识制作一个浮力称.他们找来一个瓶身为柱状的空 2020-05-17 …
鸡蛋和瓶子有一牛奶瓶,请你将一个剥了壳的熟鸡蛋用手塞进去,当然这鸡蛋的直径要比牛奶瓶的口径大.现在 2020-05-17 …
有一只空玻璃瓶测出他的质量为120克当瓶内装满水时瓶和水的总质量是450克用此空瓶装入一下金属颗粒 2020-06-22 …
有一玻璃瓶,它的质量为10克.当瓶内装满某种液体时,瓶和液体的总质量是40克;当瓶内装一金属块时, 2020-07-12 …
两个水瓶的开水可以倒在一起,然后饮用吗?家里两个水瓶里面都有开水,一天下来,都用得剩下小半瓶的样子, 2020-11-03 …