洛谷1582 倒水
来源:互联网 发布:淘宝申请售后要钱不 编辑:程序博客网 时间:2024/04/29 10:30
题目描述
一天,CC买了N个容量可以认为是无限大的瓶子,开始时每个瓶子里有1升水。接着~~CC发现瓶子实在太多了,于是他决定保留不超过K个瓶子。每次他选择两个当前含水量相同的瓶子,把一个瓶子的水全部倒进另一个里,然后把空瓶丢弃。(不能丢弃有水的瓶子)
显然在某些情况下CC无法达到目标,比如N=3,K=1。此时CC会重新买一些新的瓶子(新瓶子容量无限,开始时有1升水),以到达目标。
现在CC想知道,最少需要买多少新瓶子才能达到目标呢? 输入输出格式 输入格式:
一行两个正整数, N,K(1<=N<=10^9,K<=1000)。
输出格式:
一个非负整数,表示最少需要买多少新瓶子。
因为每个瓶子的水都一定是2的倍数,所以最少的瓶子数就是总数的二进制表示中1的个数。每次加上最低位的1直到满足要求。
#include<cstdio>#define LL long longint cnt(LL x){ int ret=0; while (x) { if (x&1) ret++; x>>=1; } return ret;}int main(){ int i,j,k,n; LL now,ans=0,x,y,z; scanf("%lld%d",&now,&n); while (cnt(now)>n) { for (x=1;;x<<=1) if (now&x) break; ans+=x; now+=x; } printf("%lld\n",ans);}
0 0
- 洛谷1582 倒水
- luogu 1582 倒水
- 洛谷 P1582 倒水
- 洛谷 P1582 倒水
- 洛谷 P1582 倒水
- 【洛谷】P1582倒水
- 洛谷 P1582 倒水 kevin_xcw
- 倒水
- 倒水
- 倒水
- 倒水
- 倒水
- 倒水
- 倒水
- 倒水
- 倒水
- 倒水
- 洛谷P1582 倒水 二进制运算
- Gentoo Linux 安装(六)安装系统工具
- React-Modal初体验
- Android小项目——计算器
- Gentoo Linux 安装(四)配置Linux内核
- Appium升级,支持测试IOS10
- 洛谷1582 倒水
- 巴蜀 1008 Antiprim数
- 欢迎使用CSDN-markdown编辑器
- 【技术分享】从开发角度浅谈CSRF攻击及防御
- C++线程局部存储(TLS)
- 点击winform窗体叉号,实现确认关闭
- 判断1000年—2000年之间的闰年
- VMwork 网络设置
- Xargs用法详解