SP2162 TOWER - Towers of Powers
题目描述
在计算机生成图形时,一个常见的问题是如何真实地模拟例如山脉和城市天际线这样的“有序随机性”。有个新入职的实习生提出了一个主意——利用数字表示中的波动来进行高度建模。在这个问题中,你需要计算一些这样的数字表示,并展示它们生成的“天际线”。
设 **n** 为一个正整数,**b** 为大于等于 2 的整数。**n** 的 _完整 **b** 进制展开_ 是通过以下步骤获得的。首先写出 **n** 的常规 **b** 进制展开,这是一个关于 **b** 的幂的和,每个幂前有一个介于 1 到 **b**-1 的系数且不包含系数为零的项。例如,对于 **n** = 20000 和 **b** = 3,20000 的 3 进制展开为:
20000 = 3 $ ^{9} $ + 3 $ ^{5} $ + 2×3 $ ^{3} $ + 2×3 $ ^{2} $ + 2
为了获得完整的 **b** 进制展开,我们对每个指数重复这个过程,直到所有数都用 **b** 进制表示。对于 **n** = 20000 和 **b** = 3,结果为:
20000 = 3 $ ^{32} $ + 3 $ ^{3 + 2} $ + 2×3 $ ^{3} $ + 2×3 $ ^{2} $ + 2
再看一个例子,设 **n** = 16647 和 **b** = 2,则展开结果为:
16647 = 2 $ ^{22 + 1} $ + 2 $ ^{2} $ + 2 + 2 $ ^{22 + 1} $ + 2 $ ^{2} $ + 2 + 1
这些数字的高低起伏形成了数字的“天际线”。
对于每对输入的整数 **n** 和 **b**,请展示 **n** 的完整 **b** 进制表示。输出应该用多行展示不同的指数高度。输出开头需以 _**n** =_ 开始,随后是展开式。答案中使用星号作为系数与 **b** 的幂次之间的乘号。零项和多余的系数与指数不应展示(如用 1 替代 b $ ^{0} $,用 b $ ^{2} $ 替代 1\*b $ ^{2} $,用 b 替代 b $ ^{1} $)。为了让数字的天际线更容易理解,必须每列显示一个字符(数字、+ 号或 \* 号),且无多余空格。具体格式可参考示例输出。
答案需要不超过 80 列。若展开式需超过 80 列,则必须在不同的项间进行拆分,形成两组或更多的显示行,继续展示剩余部分。每组显示行都需从相同列开始,并包含相同数量的(可能为空)的行。拆分只能在数字本身的项之间进行,不能在指数之内进行。请参阅示例输出以了解详细格式。注意,每组输出行都以一个空行开始。
输入格式
输入是一系列的整数对 **n** 和 **b**,最后以一对零结尾。每个 **n** 都是正整数,每个 **b** 都大于或等于 2。所有值均为 64 位无符号整数范围内(最大值为 18446744073709551615)。
输出格式
对于每对输入,按上述方式打印 **n** 的完整 **b** 进制展开。在每个展开前打印一行:
```
n in complete base b:
```
连续两个输出对之间,用正好 80 个连字符隔开。所有的系数、底数和指数都应以十进制整数形式展示。
**本翻译由 AI 自动生成**