मान लीजिए कि हमारे पास दो संख्याएँ n और k हैं। हमें आकार k और दूरी n की शब्दावली की दृष्टि से सबसे छोटी लोअरकेस स्ट्रिंग ढूंढनी है। दूरी वर्णमाला में अक्षर संख्या का योग है। उदाहरण के लिए, 'ए' में अक्षर संख्या 1 है, 'बी' में 2 है, 'y' में 25 है, 'z' में 26 है।
इसलिए, यदि इनपुट n =15 k =3 जैसा है, तो आउटपुट "आम" होगा, क्योंकि "आम" लेक्सिकोग्राफ़िक रूप से लंबाई 3 की सबसे छोटी स्ट्रिंग है जिसकी दूरी 1 + 1 + 13 =15 है।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- dist :=k आकार की एक सरणी, और 1 से भरें
- क्रेडिट:=n - k
- i :=k - 1
- क्रेडिट करते समय> 0, करें
- वैल:=न्यूनतम क्रेडिट और 25
- dist[i] :=dist[i] + val
- क्रेडिट:=क्रेडिट - वैल
- i :=i - 1
- जिले में प्रत्येक d के लिए ((d - 1 + ASCII के "a")) में शामिल हों और वापस लौटें
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
def solve(n, k): dist = [1] * k credit = n - k i = k - 1 while credit > 0: val = min(credit, 25) dist[i] += val credit -= val i -= 1 return "".join(chr(d - 1 + ord("a")) for d in dist) n = 15 k = 3 print(solve(n, k))
इनपुट
15, 3
आउटपुट
aam