蓝桥杯 完全二叉树的权值

 

基础知识

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)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值