สมมติว่าเรามีสองค่า n และ k เราต้องหาสตริงที่เล็กที่สุดเกี่ยวกับศัพท์เฉพาะซึ่งมีความยาวเป็น n และค่าตัวเลขเท่ากับ k ค่าตัวเลขของอักขระตัวพิมพ์เล็กคือตำแหน่ง (เริ่มจาก 1) ในตัวอักษร ดังนั้นค่าตัวเลขของอักขระ 'a' คือ 1 ค่าตัวเลขของอักขระ 'b' คือ 2 เป็นต้น และค่าตัวเลขของสตริงที่ประกอบด้วยตัวพิมพ์เล็กคือผลรวมของค่าตัวเลขของอักขระนั้น
ดังนั้น หากอินพุตเป็น n =4 k =16 เอาต์พุตจะเป็น "aaam" เพราะในที่นี้ ค่าตัวเลขคือ 1+1+1+13 =16 และนี่เป็นสตริงที่เล็กที่สุดโดยมีค่าและความยาวเท่ากับ 4.
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- สตริง :=สตริงว่าง
- ในขณะที่ n> 0 ไม่ใช่ศูนย์ ให้ทำ
- letter :=ขั้นต่ำ 26 และ k-n+1
- สตริง :=สตริงเชื่อมตัวอักษรที่เกี่ยวข้องจากตัวอักษรตำแหน่งตัวอักษร
- k :=k - ตัวอักษร
- n :=n - 1
- ย้อนกลับสตริงและย้อนกลับ
ตัวอย่าง
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
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)) อินพุต
4, 16
ผลลัพธ์
aaam