CF1843C.Sum in Binary Tree

传统题 时间 2000 ms 内存 256 MiB 3 尝试 1 已通过 1 标签

Sum in Binary Tree

题目描述

Vanya 非常喜欢数学。一天,当他在解一道数学题时,想到了一个有趣的树。这棵树的构造如下:

最初,树中只有一个编号为 11 的结点——也就是树根。然后,Vanya 给它添加两个子节点,分别赋予连续的编号 2233。接下来,他会按照结点编号从小到大的顺序,从 22 开始,依次为每个结点添加两个子节点,并赋予它们当前未使用的最小编号。最终,Vanya 会得到一棵以 11 为根的无限二叉树,每个结点恰好有两个子节点,结点编号按层次顺序依次排列。

Vanya 想知道,在这样一棵树中,从编号为 11 的结点到编号为 nn 的结点的路径上,所有结点编号之和是多少。由于 Vanya 不喜欢计算,他请求你帮他求出这个和。

输入格式

第一行包含一个整数 tt1t1041 \le t \le 10^4),表示测试用例的数量。

接下来有 tt 行,每行包含一个整数 nn1n10161 \le n \le 10^{16}),表示 Vanya 想要计算从根到编号为 nn 的结点路径上所有结点编号之和。

输出格式

对于每个测试用例,输出一个整数,表示所求的路径上所有结点编号之和。

说明/提示

在第一个样例中,从根到编号为 33 的结点路径上有结点 1133,它们的和为 44

在第二个样例中,从根到编号为 1010 的结点路径上有结点 1122551010,它们的和为 1+2+5+10=181+2+5+10=18

由 ChatGPT 4.1 翻译

样例

6
3
10
37
1
10000000000000000
15
4
18
71
1
19999999999999980
26

在线编程 IDE

建议全屏模式获得最佳体验