Recovering a Small String (Codeforces 1931A)
Tags: Others, strings

Nikita had a word consisting of exactly $$$3$$$ lowercase Latin letters. The letters in the Latin alphabet are numbered from $$$1$$$ to $$$26$$$, where the letter "a" has the index $$$1$$$, and the letter "z" has the index $$$26$$$.He encoded this word as the sum of the positions of all the characters in the alphabet. For example, the word "cat" he would encode as the integer $$$3 + 1 + 20 = 24$$$, because the letter "c" has the index $$$3$$$ in the alphabet, the letter "a" has the index $$$1$$$, and the letter "t" has the index $$$20$$$.However, this encoding turned out to be ambiguous! For example, when encoding the word "ava", the integer $$$1 + 22 + 1 = 24$$$ is also obtained.Determine the lexicographically smallest word of $$$3$$$ letters that could have been encoded.A string $$$a$$$ is lexicographically smaller than a string $$$b$$$ if and only if one of the following holds: $$$a$$$ is a prefix of $$$b$$$, but $$$a \ne b$$$; in the first position where $$$a$$$ and $$$b$$$ differ, the string $$$a$$$ has a letter that appears earlier in the alphabet than the corresponding letter in $$$b$$$.

Input: The first line of the input contains a single integer $$$t$$$ ($$$1 \le t \le 100$$$) — the number of test cases in the test.This is followed by the descriptions of the test cases.The first and only line of each test case contains an integer $$$n$$$ ($$$3 \le n \le 78$$$) — the encoded word.

Output: For each test case, output the lexicographically smallest three-letter word that could have been encoded on a separate line.


Sample Inputs:
5
24
70
3
55
48

Sample Outputs:
aav
rzz
aaa
czz
auz

Solution (Python):
import sys
testcases = int(sys.stdin.readline().strip())
for _ in range(testcases):
    length = int(sys.stdin.readline().strip())
    if length == 27:
        print('aay')
    elif length <= 28:
        print('aa' + chr(length - 2 + 96))
    elif length >= 53:
        print(chr(length - 52 + 96) + 'zz')
    else:
        print('a' + chr(length - 27 + 96) + 'z')

Solution (Python):
t = int(input())
for _ in range(t):
    v = int(input())
    if v == 27:
        print('aay')
    elif v <= 28:
        k = 'aa' + chr(v - 2 + 96)
        print(k)
    elif v >= 53:
        k = chr(v - 52 + 96) + 'zz'
        print(k)
    else:
        k = 'a' + chr(v - 27 + 96) + 'z'
        print(k)

Solution (Python):
def find_smallest_word(encoded_value):
    for first in range(1, 27):
        for second in range(1, 27):
            third = encoded_value - first - second
            if 1 <= third <= 26:
                return chr(first + 96) + chr(second + 96) + chr(third + 96)
    return None
t = int(input())
results = list()
for _ in range(t):
    n = int(input())
    results.append(find_smallest_word(n))
for i in results:
    print(i)