#JCPC2024B. 之旅启,KP的神庙奇遇

之旅启,KP的神庙奇遇

题目描述

在虚拟世界里,KP 是一位著名的冒险家,他正在一个丛林神庙中冒险。虽然前面的冒险一切顺利,但是平静很快被一个密码门打破了。经过分析,KP 发现破解密码的关键在于将门上的一个 1010 进制数 xx 转为 kk (2k16)(2 \leq k \leq 16) 进制。

如何将 1010 进制数转为 kk 进制呢?一向数学很好的他想到了短除法:

  1. xx 除以 kk,记录商和余数。
  2. 将商继续除以 kk,记录新的商和余数。
  3. 重复该过程,直到商为 00
  4. 最后一次得到的余数即为最高位,其余余数按照倒序排列,拼成最终结果。

KP 很快便破解了密码,向未知的前方进发了。不过启程前,KP 想考考你对短除法的熟练度,而你需要做的就是输出短除法的过程。

为了增强可读性,KP 要求你按照下面的格式要求输出:

  1. 假设当前数字不为 00,下面的例子代表了一步操作,其中 yy 代表 kkxxxxx 代表当前数字,z 代表当前数字除 kk 所得余数:
    yy|xxxxx z
       -----
    
    即输出两行,第一行输出 kkxx、求得的余数,前两者用一个管道符 | 隔开,后两者用一个空格隔开;第二行则是在当前数字的每个数字下方放置一个短杠 -
  2. 前导空白部分用空格填充,第一行开头不能有前导空格。
  3. 后续操作的最后一个短杠需要和第一步的最后一个短杠对齐。
  4. 当前数字为 00 时,只需输出一个 00,但也要对齐。
  5. 当余数超过 99 时,用 A 代表 1010B 代表 1111,以此类推。

你可以参考样例输出的格式以便更好理解本题。

输入格式

输入包含一行两个正整数 x,kx, k (1x106,2k16)(1 \leq x \leq 10 ^ 6, 2 \leq k \leq 16),分别代表待处理数字和目标进制。

输出格式

按照题目要求输出使用短除法转换进制的过程。

616 15
15|616 1
   ---
 15|41 B
    --
  15|2 2
     -
     0
241201 7
7|241201 2
  ------
 7|34457 3
   -----
  7|4922 1
    ----
   7|703 3
     ---
   7|100 2
     ---
    7|14 0
      --
     7|2 2
       -
       0
1 2
2|1 1
  -
  0