CSPSMK07A. 树(tree)

提交3 通过2
通过率66.7%
文件IO启用
输入文件tree.in
输出文件tree.out
时间限制1000ms
内存限制100MiB
    ID: 14547 传统题 文件IO 输入文件:tree.in 输出文件:tree.out 1000ms 100MiB 尝试: 3 已通过: 2 难度: 普及+/提高- 上传者: 标签>C++CSP-S考前模拟

题目描述

题目描述

有一棵 nn 层的满二叉树,第 ii 层(0≤i≤n−10 \le i \le n-1)有 2i2^i 个结点。

第 ii 层(1≤i≤n−11 \le i \le n-1)的第 jj 个结点(1≤j≤2i1 \le j \le 2^i),是第 i−1i-1 层第 ⌈j2⌉\lceil \frac{j}{2} \rceil 个结点的子结点。如 jj 是奇数则是左子结点,否则是右子结点。

每个叶子结点都可以挂衣服。

对于每个非叶子结点,设它左子树和右子树上分别挂了 wlw_l 和 wrw_r 件衣服,要求挂完每件衣服后都有 wl−wr∈{0,1}w_l-w_r \in \{0, 1\}(注意不能为 −1-1)。

请求出第 kk 件衣服应该挂在第几个叶子结点,输出这个编号模 109+710^9+7 的值。

输入格式

一行,两个正整数 n,kn, k。

输出格式

一行,一个正整数,表示所求叶子结点编号模 109+710^9+7 的值。

输入样例 #1

3 2

输出样例 #1

5

输入样例 #2

5 10

输出样例 #2

19

输入样例 #3

1 1

输出样例 #3

1

说明提示

【样例输入输出解释】

样例 1 解释

挂衣服的顺序是 1,5,3,7,2,6,4,81, 5, 3, 7, 2, 6, 4, 8。

【数据规模与约定】

对于 100%100\% 的数据,保证 1≤k≤min⁡{2n,1018}1 \le k \le \min\{2^n, 10^{18}\}。

子任务编号 数据范围 分值
11 1≤n≤101 \le n \le 10 2020
22 1≤n≤201 \le n \le 20
33 1≤n≤1061 \le n \le 10^6 6060