B-嘤嘤不想打怪兽喵_牛客周赛 Round 49 (nowcoder.com)
我们可以用二叉树递归去做.这个我们就可以看做每一层,最后我们输出二叉树的层数就可以了
#include<bits/stdc++.h>
using namespace std;
unordered_map<int,int> mp;
int solve(int x)
{
if(x==0)return 0; //如果最后只有0了,就结束了
if(mp.count(x)) return mp[x];
int res=solve(x/2)+solve(x/2)+1; //ans保存层数
mp[x]=res; //哈希统计存储一下当前数出现的次数
return res;
}
int main()
{
int n;cin>>n;
cout<<solve(n)<<endl;
return 0;
}