ধরুন আমাদের দুটি সংখ্যা 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