#D0995. 表格列名

表格列名

题目描述

33DAI 的表格软件用字母给每一列编号:第 11 列叫 A,第 22 列叫 B,……,第 2626 列叫 Z,第 2727 列叫 AA,第 2828 列叫 AB。

编号的规律是:把只由大写英文字母组成的列名按长度从小到大排列,长度相同的按字典序排列,排在第 nn 个的列名就是第 nn 列的编号。例如:

nn 列名
11 A
2626 Z
2727 AA
5252 AZ
5353 BA
702702 ZZ
703703 AAA

给定 tt 个列号,33DAI 想知道它们各自的列名。

输入格式

从标准输入读入数据。

输入的第一行是一个整数 tt(1≤t≤1051 \le t \le 10^5),表示列号的个数。

接下来 tt 行,每行一个整数 nn(1≤n≤10121 \le n \le 10^{12}),表示一个列号。

输出格式

输出到标准输出。

输出 tt 行,顺序与输入一致。每行一个只由大写英文字母组成的字符串,表示该列号对应的列名。

6
1
26
27
52
53
702
A
Z
AA
AZ
BA
ZZ
4
703
675
676
18278
AAA
YY
YZ
ZZZ
1
1000000000000
DTMCHRXUN

样例解释

  • 样例 1:一位的列名一共 2626 个(A 到 Z),所以第 2727 个进入两位;两位的列名一共 26×26=67626 \times 26 = 676 个,第 5252 个是两位里的第 52−26=2652 - 26 = 26 个,即 AZ;第 5353 个是两位里的第 2727 个,即 BA;第 702702 个是两位里的最后一个,即 ZZ。
  • 样例 2:三位从第 703703 个开始,第一个是 AAA;n=675n = 675 是两位里的第 675−26=649675 - 26 = 649 个,即 YY;n=676n = 676 是两位里的第 650650 个,即 YZ;两位一共有 676676 个,所以第 702702 个是 ZZ,第 1827818278 个是三位里的最后一个 ZZZ(26+676+17576=1827826 + 676 + 17576 = 18278)。
  • 样例 3:第 101210^{12} 个列名的长度是 99,答案是 DTMCHRXUN。

提示

  • 列号最大到 101210^{12},读入与计算请使用 6464 位整型。
  • 每行只输出一个大写字母串,不要输出多余的空格。

数据范围

对于所有测试数据,保证 1≤t≤1051 \le t \le 10^5,1≤n≤10121 \le n \le 10^{12}。

子任务 分值 测试点数 限制
11 3030 55 n≤26n \le 26
22 n≤106n \le 10^6
33 4040 无额外限制

共 1515 个测试点,按测试点计分:子任务 11、22 的每个测试点 66 分,子任务 33 的每个测试点 88 分。