虽然是简单题,就是log2的运用,然后对于同层的数据累加取最大值
#include<bits/stdc++.h>
using namespace std;
const int N=100010;
int a[N];
int main(){
int n;
cin>>n;
int MAX=-1;
for( int i=1;i<=n;i++){
int j;
cin>>j;
// cout<<(int)log2(i)+1<<endl;
a[(int)log2(i)+1]+=j;
}
int flag=0;
for(int i=1;i<=log2(n)+1;i++){
// cout<<a[i]<<endl;
if(MAX<=a[i]){
MAX=max(a[i],MAX);
flag=i;
}
}
cout<<flag<<endl;
return 0;
}
double n=3.12;
if (typeid((int)floor(n)) == typeid(int)) {
cout<<(int)floor(n)<<endl;
cout<<"yes"<<endl;
}
return 0;
floor向下取整后的数仍然是原来的类型,所以floor输出记得强转。