题目链接:1.砍竹子 - 蓝桥云课 (lanqiao.cn)
#include<iostream>
#include<set>
#include<cmath>
using namespace std;
typedef long long ll;
int main()
{
ll n,sum=0;//sum魔法次数
cin>>n;
set<ll>front;
while(n--)
{
ll num;
cin>>num;
set<ll>now;
while(num>1)
{
now.insert(num);//当前集合
if(!front.count(num))//上一次集合,解决魔法可以对连续的一段相同的竹子使用
sum++;
num=sqrtl(num/2+1);//高度不为1的竹子都要使用魔法
}
front=now;
}
cout<<sum<<endl;
return 0;
}