สมมติว่าเรามีสองค่า 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