#L3907. 「PA 2022」Wersja dla profesjonalistów

「PA 2022」Wersja dla profesjonalistów

题目描述

题目译自 PA 2022 Runda 2 Wersja dla profesjonalistów,感谢 @Qingyu 提供本题 checker。

在 POI Junior 2022 中有这样一道题:

Bytie 准备画一个如下图所示的三角形金字塔:

Bytie 想要画的金字塔有 N 层。最下层有 2N-1 个三角形,尖端向上和向下交替放置。在更高层的三角形也类似摆放,但是每层少两个三角形。因此,上图展示的是 N=3 的情况。

Bytie 有一个程序可以让他在屏幕上绘制这样的图形。屏幕上某点处有一支笔,它能以不同的角度画出线段。Bytie 的程序接受的命令是字母 A..F —— 每个字母意味着在一个方向上移动笔,并画出一条线段,如下图所示。

例如,命令 FBBBFBFBFBFBBBFBFBFB 将绘制出如下图所示的线段:

程序的最新版本可以接受更复杂的命令:除字母外,数字也可以接受。数字意味着重复某个特定的命令。更确切地说:

  • 命令 kZkZ,其中 k{1,2,3,4,5,6,7,8,9}k \in \{1,2,3,4,5,6,7,8,9\},同时 Z{A,B,C,D,E,F}Z \in \{A,B,C,D,E,F\}。这个命令和 ZZZZZZ \ldots ZZ 效果相同(kk 个字母 ZZ)。

  • 命令 k[S]k[S],其中 k{1,2,3,4,5,6,7,8,9}k \in \{1,2,3,4,5,6,7,8,9\}SS 是某个命令序列。这个命令和 SSSSSS \ldots SS 效果相同(kk 个操作 SS),操作序列 SS 中也可以包含数字。

例如,3[2A] 就是 AAAAAA,绘制一个简单三角形的操作序列也可以简化为 F3B3[FB] F3B3[FB]2[F3BFBFBFB] 甚至是 2[F3B3[FB]]。注意操作命令中的 kk 不能大于 9,例如 10A58[AB] 都是不允许的。

Bytie 想用一个命令来实现这个金字塔。他有一个额外的条件:笔永远不要在同一条线段上画两次(由于程序中的一个小错误,这样画线条就会稍微粗一些,这不符合 Bytie 的审美,会让他很不爽)。例如,命令 2[FBD] 就违反了这一规则——三角形的每条线段将被画两次。Bytie 的第二个要求是,该命令长度不应超过 150 000 个字符。

请你构建一个合适的命令字符串。写一个程序,对于给定的 NN,输出一个字符串,生成一个 NN 层金字塔。我们假设开始时的笔在金字塔的左下角。

输入格式

输入一行一个整数 nn (1<n<10181 < n < 10^{18}),表示金字塔的层数。

输出格式

输出长度不超过 150 000 的操作序列,使其可以恰好建成一个 nn 层金字塔。

3

2[FB]2DE2AECEAE3[C]A

数据规模与约定

1<n<10181 < n < 10^{18}

输出命令长度不超过 150 000

不能重复绘制同一条线段

命令中的重复系数 kk 不能大于 9