题目描述
打怪,怪会分成两个,打到1的时候就没了
原先这篇题解有点复杂啊……
思路
看看样例,发现了什么不得了的事
答案很简单,就是2的第一个比h大的次幂减1
但为什么呢?
可给出一种直观的解释,你可以把它分裂的过程看做一棵二叉树,二叉树的节点数就是要攻击的次数了
这个D题比C题简单多了,居然直接递归都可过……
代码
#include<bits/stdc++.h>
using namespace std;
unsigned long long p,cnt=1;
int main(){
cin>>p;
while(p>=cnt) cnt<<=1;//求2的第一个比h大的次幂
cout<<cnt-1;
return 0;
}
最后一次更新于2020-02-26
0 条评论