基础知识
math.log()函数不能直接访问,需要导入math模块。
log(x,base)参数:
1.x-数值表达式
2.base-可选,默认e.
接下来我们看一个例子:
>>> import math
>>> a = math.log(10,100)
>>> a
0.5
>>> a = math.log(100,100)
>>> a
1.0
>>> a = math.log(1000,100)
>>> a
1.4999999999999998
>>> a = math.log(10000,100)
>>> a
2.0
与math.log()等同的式子
n = int(input())
H = 0
cnt = 0
while cnt < n:
cnt += 2**H
H += 1
print(H)
完全二叉树的性质:
完全二叉树的深度:math.log(n,2)+1,其中2为底,节点数n为真数。
完全二叉树每一层的开始序号是math.pow(2,i)-1,末尾序号是math.pow(2,i+1)-1,其中i是从0开始的
输入输出样例
示例
输入
7
1 6 5 4 3 2 1
输出
2
答案
import os
import sys
import math
n=int(input())
s=list(map(int,input().split()))
a=[]
deep=int(math.log(n,2))+1
for i in range(deep):
a.append(sum(s[2**i-1:2*2**i-1]))
print(a.index(max(a))+1)#下标从0开始,而深度从1开始
或者
import math
n = int(input())
num = list(map(int, input().split(" ")))
deep = int(math.log(n, 2) + 1)
ls = []
for i in range(deep):
ls.append(sum(num[int(math.pow(2,i)-1):int(math.pow(2,(i+1))-1)]))
print(ls.index(max(ls))+1)