HDU
来源:互联网 发布:ssl端口是什么 编辑:程序博客网 时间:2024/06/14 07:16
题意:给出一颗二叉树,根节点为1,子节点为父节点的2倍和2倍+1,从根节点开始依次向下走k层,问如何走能使得将路径上的数进行加减最终结果得到n。
思路:来自:点击打开链接
做题一定要注意数据范围! n <= 2^k啊!
是真的没想到利用差值去搞事情。。
代码:
#include<bits/stdc++.h>#define ll long longusing namespace std;int main(){ int T, kase = 1; ll n, k; cin >> T; while(T--) { cin >> n >> k; bool flag = 0; ll all = (1ll << k) - 1, delta; delta = all - n; if(delta & 1){ delta++;//这里相当于多减去了1,要在最后一层加回来 flag = 1; } delta >>= 1; printf("Case #%d: \n", kase++); for(int i = 0; i < k - 1; i++){ if(delta >> i & 1) printf("%lld -\n", 1ll << i); else printf("%lld +\n", 1ll << i); } if(flag) printf("%lld +\n", (1ll << (k - 1)) + 1); else printf("%lld +\n", 1ll << (k - 1)); }}
阅读全文
0 0
- hdu
- hdu
- HDU
- hdu ()
- hdu
- hdu
- HDU
- HDU
- hdu
- hdu
- HDU
- Hdu
- hdu
- hdu-
- hdu
- hdu
- hdu
- HDU
- 音视频,流媒体
- python基础篇一
- mac装python包mysql_python遇到的问题
- 重写和重载
- POJ 1350 Cabric Number Problem
- HDU
- Java多线程中锁的理解与使用
- node.js调试使用node-inspector
- 海康威视笔试题(二)
- Rust: Range<char> 'a'..'z' 能干什么?......待续
- 整数相乘末尾0的个数
- myeclipse安装svn
- 项目常见错误及解决方法-angular中select空白项问题
- MyBatis+MySQL 返回插入的主键ID