(二叉树性质)
C++ 代码
#include <bits/stdc++.h>
using namespace std;
const int N=100010;
int n,m;
int a[N];
int main()
{
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i];
int deep=1;long long s=a[1];
for(int i=1;i<=log2(n);i++)//根的最大值为log2(n) 此时的i表示根的上一层
{
long long sum=0;
for(int j=(1<<i);j<=(1<<(i+1))-1&&j<=n;j++)
{//第i层的第一个数为2^(i-1) 最后一数为2^i-1 完全二叉树不是满二叉树
sum+=a[j];
}
if(sum>s)
{
s=sum;deep=i+1;
}
}
cout<<deep<<endl;
return 0;
}