Python
第二题为什么始终通不过测试呢,百思不得其解,希望有大佬能够解惑
我的思路是先寻找输入值n对应的最大深度deep,通过连续除2取整,计算直到为0时一共计算的次数可求得
然后遍历每一层深度,因为每一层的深度值相同,结点编号连续,只需要将这一连续结点值加起来乘以深度值即可
遍历到最后一层时,结点值以输入n值结束
题目中的测试用例都是通过了的,但最后提交的时候只通过了40%
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
# 
# @param n long长整型 表示标准完全二叉树的结点个数
# @return long长整型
#
class Solution:
    def tree4(self , n ):
        # write code here
        value = 0
        deep = 0
        m = n
        while n>0:
            n = n//2
            deep +=1
        for i in range(1, deep + 1):
            if i!=deep:
                value += sum(range(2**(i-1), 2**i))*i
            else:
                value += sum(range(2**(i-1), m+1))*i
        return value
        
while True:
    try:
        n = int(input())
        print(Solution().tree4(n))
    except:
        break