#L4921. 「POI2019 R1」子序列 Subsequences

「POI2019 R1」子序列 Subsequences

#49214921. 「POI2019 R1」子序列 Subsequences

题目描述

题目译自 XXVI Olimpiada Informatyczna – I etap Podciągi

请你写一个程序,对于给定的自然数 nn,生成一个不太长、字符种类不多的字符串,使它正好有 nn 个不同的子序列。

具体来说,假设字符串 ww 由字符 w1,w2,,wmw_{1}, w_{2}, \ldots, w_{m} 组成。它的子序列是指形如 wi1wi2wikw_{i_{1}} w_{i_{2}} \ldots w_{i_{k}} 的任意字符串,其中 0km0 \leq k \leq m1i1<i2<<ikm1 \leq i_{1} < i_{2} < \ldots < i_{k} \leq m。特别地,空字符串(长度为 00)也是 ww 的子序列。两个子序列若表示的字符串不同,就视为不同。例如,字符串 ioiioi77 个不同子序列:空字符串以及 iiooiiiiioiooioiioiioi。注意,单字符子序列 iiioiioi 中出现了两次,但只统计一次。

输入格式

输入的第一行是一个自然数 qq (1q100001 \leq q \leq 10000),表示输入数据组数。

接下来的 qq 行,每行一个自然数 nn (2n10182 \leq n \leq 10^{18}),表示你生成的字符串需要有的不同子序列数量(包括空子序列)。

输出格式

输出 qq 行,每行对应一组输入数据的答案。每行是一个字符串,最多包含 10001000 个字符,可以使用数字以及英文大小写字母(这些字符在比较子序列时互不相同)。该字符串需恰好有 nn 个不同子序列。

若有多个正确答案,输出任意一个即可。

若无满足条件的答案,输出 !!

样例

输入

55 77 1010 4242 1515 512512

输出

ioiioi MmmmmMmmmm ERRATAERRATA 0000FF0000FF R3GuLaM1NR3GuLaM1N

数据范围与提示

详细子任务附加限制及分值如下表所示。

子任务 附加限制 分值
11 每个 nn 的质因数分解之和不超过 300300 2020
22 每个 nn 是两个 22 的幂之差 1010
33 nn 的二进制不以 0101010010 结尾,且无相邻 00
44 n106n \leq 10^{6},随机生成 2020
55 n1018n \leq 10^{18},随机生成 3030
66 n1018n \leq 10^{18},非随机生成 1010