#B4372. [GXPC-S 2025] 异或之力 / xor

[GXPC-S 2025] 异或之力 / xor

题目背景

题目来源:2025 年广西中小学生程序设计挑战赛复赛(进阶组试题)。

题目描述

传说中,只有能够将力量完美分解的勇者,才能获得王国中最强大的能量 —— 异或之力。

对于每一个 01 字符串都含有一定异或之力。假设某个 01 字符串所代表的十进制数为 CC,当 C1C \le 1 时异或之力为 00;当 C>1C > 1 时,将 CC 分解成任意两个正整数 AABBA>0A > 0B>0B > 0A+B=CA + B = C),得到 AA 异或 BB 的最大值为 PP,异或最小值为 QQ,异或之力即为 PPQQ 的差值。

作为王国的继承者,你被赋予了一个正整数 nn。你的任务是寻找所有长度为 nn 的 01 字符串(注意:字符串可含前导零,即 (0011)2(0011)_2 是合法的,与 (11)2(11)_2 相同都代表着数字 3)中,最大异或之力是多少。这个数可能很大,请输出其对 109+710^9 + 7 取模之后的结果。

异或运算(\oplus):对于两个二进制数的每一位,如果相同则为 00,不同则为 11。例如,63=(110)2(011)2=(101)2=56\oplus 3=(110)_2\oplus (011)_2=(101)_2=593=(1001)2(0011)2=(1010)2=109\oplus 3=(1001)_2\oplus (0011)_2=(1010)_2=10

输入格式

一行包含一个正整数 nn,表示字符串的长度。

输出格式

一个整数,表示最大异或之力对 109+710^9 + 7 取模之后的结果。

3
6

提示

样例解释

长度为 3 的 01 字符有 111、110、101、100、011、010、001、000。
对于 (110)2(110)_2 也就是 6 来说,当分解成 4 和 2 时取得异或最大值 6,当分解成 3 和 3 时取得最小异或值 0。没有其他情况使得最大与最小异或值差大于 6,故答案为 6。

数据范围

  • 对于 20%20\% 的数据,2n<102 \le n < 10
  • 对于 40%40\% 的数据,2n<642 \le n < 64
  • 对于 60%60\% 的数据,2n1062 \le n \le 10^6
  • 对于 100%100\% 的数据,2n1092 \le n \le 10^9