Suppose we have two values n and k. We have to find the lexicographically smallest string whose length is n and numeric value equal to k. The numeric value of a lowercase character is its position (starting from 1) in the alphabet, so the numeric value of character 'a' is 1, the numeric value of character 'b' is 2 and so on. And the numeric value of a string consisting of lowercase characters is the sum of its characters' numeric values.
So, if the input is like n = 4 k = 16, then the output will be "aaam" because here the numeric value is 1+1+1+13 = 16, and this is smallest string with such a value and length is 4.
To solve this, we will follow these steps −
- string := blank string
- while n > 0 is non-zero, do
- letter := minimum of 26 and k-n+1
- string := string concatenate corresponding letter from alphabet position value letter
- k := k - letter
- n := n - 1
- reverse the string and return
Example
Let us see the following implementation to get better understanding −
def solve(n, k): string = "" while n > 0: letter = min(26, k-n+1) string += chr(letter + ord('a') - 1) k -= letter n -= 1 return string[::-1] n = 4 k = 16 print(solve(n, k))
Input
4, 16
Output
aaam