ধরুন আমাদের দুটি সংখ্যা n এবং k আছে। আমাদের কে এবং দূরত্ব n আকারের অভিধানিকভাবে সবচেয়ে ছোট ছোট হাতের স্ট্রিং খুঁজে বের করতে হবে। দূরত্ব হল বর্ণমালায় বর্ণ সংখ্যার সমষ্টি। যেমন, 'a'-এ 1 নম্বর, 'b'-এ 2, 'y'-এ 25, 'z'-এ 26 আছে।
সুতরাং, যদি ইনপুটটি n =15 k =3 এর মত হয়, তাহলে আউটপুট হবে "aam", কারণ "aam" হল অভিধানগতভাবে দৈর্ঘ্য 3 এর সবচেয়ে ছোট স্ট্রিং যার দূরত্ব হল 1 + 1 + 13 =15৷
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- dist :=k আকারের একটি অ্যারে, এবং 1 দিয়ে পূরণ করুন
- ক্রেডিট :=n - k
- i :=k - 1
- যখন ক্রেডিট> 0, do
- val :=সর্বনিম্ন ক্রেডিট এবং 25
- dist[i] :=dist[i] + val
- ক্রেডিট :=ক্রেডিট - ভ্যাল
- i :=i - 1
- (d - 1 + "a") এর ASCII-এর অক্ষর) প্রতিটি ডি-এর জন্য) যোগ দিন এবং ফিরে আসুন
উদাহরণ
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
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