मान लीजिए हमारे पास दो मान n और k हैं। हमें लेक्सिकोग्राफिक रूप से सबसे छोटी स्ट्रिंग ढूंढनी है जिसकी लंबाई n है और संख्यात्मक मान k के बराबर है। एक छोटे अक्षर का संख्यात्मक मान वर्णमाला में उसकी स्थिति (1 से शुरू) है, इसलिए वर्ण 'a' का अंकीय मान 1 है, वर्ण 'b' का अंकीय मान 2 है और इसी तरह आगे भी। और लोअरकेस वर्णों वाली एक स्ट्रिंग का अंकीय मान उसके वर्णों के संख्यात्मक मानों का योग होता है।
इसलिए, यदि इनपुट n =4 k =16 जैसा है, तो आउटपुट "आम" होगा क्योंकि यहाँ संख्यात्मक मान 1+1+1+13 =16 है, और यह इस तरह के मान और लंबाई के साथ सबसे छोटी स्ट्रिंग है 4.
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- स्ट्रिंग:=खाली स्ट्रिंग
- जबकि n> 0 गैर-शून्य है, करें
- पत्र :=न्यूनतम 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