CF1671E Preorder
题目描述
给你一颗 $2^n-1$ 个节点的完美二叉树,按照以下顺序编号:
- 根节点编号为 $1$;
- 编号为 $x$ 的节点左儿子为 $2x$,右儿子为 $2x+1$。
每个顶点上有一个字母 `A` 或 `B`,在节点 $x$ 上的字母为 $s_x$。
顶点 $x$ 的先序串 $f(x)$ 定义如下:
- 如果 $x$ 是叶子,那么 $x$ 的先序串是 $s_x$;
- 否则 $x$ 的先序串是 $s_x+f(l_x)+f(r_x)$,其中 $+$ 表示连接两个字符串,$l_x,r_x$ 代表 $x$ 的左右儿子。
一棵树的先序串是根节点的先序串。
允许执行交换任意一个非叶子节点的左右儿子任意次,求树可能的所有不同先序串的个数,
答案模 $998244353$ 。
输入格式
第一行一个整数 $n$($2\le n\le18$)。
第二行 $2^n-1$ 个字母 `A` 或 `B` 表示 $s_1$ 到 $s_{2^n-1}$,中间没有空格。
输出格式
一个整数表示答案模 $998244353$ 的值。