https://www.luogu.com.cn/problem/P1582

#include <bits/stdc++.h>
using namespace std;
#define int long long
int n,k;
//取出1的个数
int check(int x){
int c = ;
for(;x;x -= x & -x){
c++;
}
return c;
}
int ans;
signed main(){
ios::sync_with_stdio();
cin >> n >> k;
while(check(n) > k){
ans += n & -n;
n += n & -n;
}
cout << ans;
return ;
}

如果要是K= 1的 时候,我们很自然的能想到当能满足2n

的时候是符合题意的,可是数据范围这么大,求2n

显然是不可能的

这时候怎么办?

二进制呢

5 101 1 2
n 二进制下 lowbit() 合并后瓶子的个数
1 1 1 1
2 10 10 1
3 11 1 1
4 100 100 1

我们可以发现,合并后瓶子个数就是二进制中1的个数 ,我们可以借助lowbit()求出1的个数

然后和k比较,如果相等 说明不用

大于 说明瓶子数量不够 我们要加瓶子,那么也应该从最低为加

小于说明不用加了,输出0

最新文章

  1. 分享jquery实现百叶窗特效的图片轮播
  2. 手机自适应meta设置
  3. 团队作业week2
  4. 手动创建servlet
  5. angular中的等号(==)判定
  6. HttpClient构造文件上传
  7. h5drag事件
  8. django 配置URLconf和获取值
  9. 关于 i++ 与 ++i
  10. 【Python selenium自动化环境配置】4步搞定ChromeDriver版本选择
  11. pandas导入导出数据-【老鱼学pandas】
  12. java并发基础
  13. os.system
  14. 浅谈IIS 和 asp.net的应用之间的关系
  15. [CodeForces - 614E] E - Necklace
  16. Linux 安装 iptables防火墙
  17. Java基础-异常(Exception)处理
  18. 《Java程序猿面试宝典》之字符串
  19. 链家2018春招C/C++开发实习生在线考试编程题
  20. SD 一轮集训 day3 染色(color)

热门文章

  1. E11000 duplicate key error index: test.collection.$a.b_1 dup key: { : null } 报错记录
  2. 【35】单层卷积网络(simple convolution)
  3. P1339 热浪【最短路】
  4. PAT (Basic Level) Practice (中文)1076 Wifi密码 (15 分)
  5. 关于华为高斯数据库 GaussDB 版本及认证体系介绍
  6. 0级搭建类008-Ubuntu Server Linux安装 (18.04.2) 公开
  7. JS中axios使用注意点
  8. XSS漏洞原理
  9. Treats for the Cows POJ - 3186 dp 区间dp
  10. 《深入理解java虚拟机》读书笔记九——第十章