HDU 6121 Build a tree(递归)
来源:互联网 发布:vrp在线算法 编辑:程序博客网 时间:2024/05/17 22:28
Description
给出一个满
Input
第一行一整数
Output
输出
Sample Input
2
5 2
5 3
Sample Output
7
6
Solution
找到不完全的子树,该子树左边的兄弟子树和右边的兄弟子树都是完全
注意
Code
#include<cstdio>using namespace std;typedef long long ll;ll n,k;ll Solve(){ if(n<k+1) { if(n&1)return n; return n+1; } ll Sum=1,p=1,Xor=1; while((n-Sum)/k>=p) { p*=k; Sum+=p; Xor^=p; } ll L=(n-Sum-1)/p,R=k-L-1; ll ans=n; if(k&1) { if(L&1)ans^=Xor; if(R&1)ans^=(Xor^p); } else { if(L&1)ans^=Sum; if(R&1)ans^=(Sum-p); } n-=L*Sum+R*(Sum-p)+1; return ans^Solve();}int main(){ int T; scanf("%d",&T); while(T--) { scanf("%I64d%I64d",&n,&k); if(k==1) { if(n%4==0)printf("%I64d\n",n); else if(n%4==1)printf("1\n"); else if(n%4==2)printf("%I64d\n",n+1); else printf("0\n"); } else { printf("%I64d\n",Solve()); } } return 0;}
阅读全文
0 0
- HDU 6121 Build a tree(递归)
- hdu 6121 Build a tree (模拟)
- HDU 6121 Build a tree (技巧)
- hdu 6121 Build a tree (图论)
- HDU 6121 Build a tree (递归+特判, 2017 Multi-Univ Training Contest 7)
- HDU 6121 Build a tree
- hdu 6121 Build a tree
- hdu 6121 Build a tree
- HDU 6121Build a tree
- hdu--6121--Build a tree
- hdu--6121:Build a tree
- hdu 6121 Build a tree
- HDU-6121 Build a tree
- hdu 6121 Build a tree
- HDU 6121 Build a tree【】
- HDU 6121 Build a tree(树 递归 17多校第七场)
- HDU 6121 Build a tree [想法题]
- HDU 6121 Build a tree [想法题]
- 百度推送SDK之API(四)
- 已经禁用了虚拟内存,为什么还提示“页面文件太小 无法完成操作 ”
- 32位int和64位int
- POJ
- 第三周 项目4 2
- HDU 6121 Build a tree(递归)
- QT下链接SQLServer2012数据库异常处理记录
- yum、rpm以及composer的区别,以及Composer安装和使用
- 一个应届产品狗的产品日记【第二部:学做产品】
- 翻译 | 2015年的最佳Material Design集锦 【上篇】
- 一个好的界面设计应该注意的75个原则
- JS实现多选框CheckBox单选问题
- PMCAFF微课堂「已结束」 | 阿里资深运营揭秘电商运营与纯互联网运营的区别与互通
- fatal: --author 'user@mail.com' is not 'Name <email>' and matches no existing author