CF585C Alice, Bob, Oranges and Apples

题目描述

Alice 和 Bob 决定吃些水果。在厨房里他们找到了一大袋橙子和苹果。Alice 立即给自己拿了一个橙子,Bob 拿了一个苹果。为了让分水果的过程更有趣,这两个朋友决定玩一个游戏。他们准备了若干张卡片,每张卡片上写有一个字母,要么是 'A',要么是 'B'。然后他们从左到右依次取出卡片,每次取出一张卡片: - 如果卡片上写的是字母 'A',则 Alice 将她此时拥有的所有水果都给 Bob,并从袋子里拿出与她刚才拥有的一样数量的橙子和苹果。因此,Alice 拥有的橙子和苹果数量不会改变。 - 如果卡片上写的是字母 'B',则 Bob 进行同样的操作:他将所有水果都给 Alice,并从袋子里取出与他刚才拥有的一样数量的水果。因此,Bob 拥有的橙子和苹果数量不会改变。 当最后一张卡片被移除时,袋子里的所有水果刚好用完。 你知道袋子里起初有多少橙子和苹果。你的任务是找出 Alice 和 Bob 可能玩的任意一个卡片序列。

输入格式

第一行输入两个整数 $x, y$($1 \leq x, y \leq 10^{18}$),分别表示袋子里最初有多少橙子和苹果。

输出格式

输出任意一个满足题目条件的卡片序列,形式为压缩字符串,仅包含字符 'A' 和 'B'。具体为:需要将所有连续相同的字符段用字符次数加该字符来替换。例如,字符串 AAABAABBB 应写为 3A1B2A3B,但不能写作 2A1A1B2A3B 或 3AB2A3B。详见样例。你输出的字符串长度最多为 $10^{6}$ 个字符。保证如果存在答案,则其压缩表示不会超过 $10^6$ 个字符。如果有多种答案,可以输出任意一种。 如果不存在满足条件的卡片序列,输出一行 Impossible。

说明/提示

在第一个样例中,如果卡片序列为三个 'B',那么 Bob 应该三次把一个苹果给 Alice。游戏结束时,Alice 有一个橙子和三个苹果,Bob 有一个苹果,总共是一橙四苹果。 在第二个样例中,没有答案,因为一张卡片不够让游戏结束,而两张卡片将产生至少三只苹果或三只橙子。 在第三个样例中,卡片序列为 'AB',取出第一张卡片后 Bob 有一个橙子一个苹果,第二张卡片后 Alice 有两个橙子一个苹果。计总共为三只橙子两只苹果。 由 ChatGPT 5 翻译