专栏文章

题解:P11909 [NHSPC 2023] H. 整数的回文分解法

P11909题解参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@mipvwh4z
此快照首次捕获于
2025/12/03 18:48
3 个月前
此快照最后确认于
2025/12/03 18:48
3 个月前
查看原文

Statement

求有几个正整数回文串的和等于 nn

Sol

回文串可以被拆成左侧,中间,右侧三个部分。令 x,y,zx, y, z 分别是这三个部分的和,特殊地,若回文串的长度是偶数,我们定义中间是 00。若长度是 11,我们定义 x=z=0x = z = 0。那么 x+y+z=2x+y=nx + y + z = 2x + y = n。换言之 02xn0\le2x\le n。只需要确定每个 xx 的拆分方法数即可。
一个整数 pp 的拆分方法数等于一个长度为 pp 的序列拆分为若干个子区间的方法数。注意到除了第一个位置,每个位置都可以独立地选择是否和左边的位置放在同一个区间,因此方法数是 2p12^{p-1}。特殊地,根据题目定义,p=0p=0 的答案是 11(对应不拆分的情况)。
因此答案就是 1+x=0n/212x=2n/21+\sum_{x=0}^{\lfloor n/2\rfloor -1}2^x = 2^{\lfloor n/2\rfloor}

Code

PYTHON
for _ in range(int(input())):
    print(pow(2, int(input()) // 2, int(1e9+7)))

评论

0 条评论,欢迎与作者交流。

正在加载评论...