Giả sử chúng ta có hai giá trị n và k. Chúng ta phải tìm chuỗi nhỏ nhất về mặt từ vựng có độ dài là n và giá trị số bằng k. Giá trị số của một ký tự viết thường là vị trí của nó (bắt đầu từ 1) trong bảng chữ cái, vì vậy giá trị số của ký tự 'a' là 1, giá trị số của ký tự 'b' là 2, v.v. Và giá trị số của một chuỗi bao gồm các ký tự viết thường là tổng các giá trị số của các ký tự đó.
Vì vậy, nếu đầu vào là n =4 k =16, thì đầu ra sẽ là "aaam" vì ở đây giá trị số là 1 + 1 + 1 + 13 =16, và đây là chuỗi nhỏ nhất có giá trị như vậy và độ dài là 4.
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
- string:=chuỗi trống
- trong khi n> 0 là khác 0, hãy thực hiện
- letter:=tối thiểu là 26 và k-n + 1
- string:=string nối chữ cái tương ứng từ chữ cái giá trị vị trí trong bảng chữ cái
- k:=k - chữ cái
- n:=n - 1
- đảo ngược chuỗi và trả về
Ví dụ
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
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))
Đầu vào
4, 16
Đầu ra
aaam