ধরুন আমাদের একটি বলের কারখানা আছে যেখানে আমাদের n বল আছে l থেকে r পর্যন্ত (উভয়ই অন্তর্ভুক্ত) এবং 1 থেকে অসীম পর্যন্ত অসীম সংখ্যক বাক্স রয়েছে। তাই যদি আমরা প্রতিটি বলকে বাক্সে একটি সংখ্যা দিয়ে বলের সংখ্যার অঙ্কের যোগফলের সমান করি। (উদাহরণস্বরূপ, 123 নম্বর বলটি 1 + 2 + 3 =6 নম্বর বক্সে রাখা হবে)। তাই যদি আমাদের দুটি মান l এবং r থাকে, তাহলে আমাদের সবচেয়ে বেশি বল সহ বাক্সে বলের সংখ্যা খুঁজে বের করতে হবে।
সুতরাং, যদি ইনপুট l =15 r =25 এর মত হয়, তাহলে আউটপুট হবে 2 কারণ
-
15 নম্বর বলটিকে 1+5 =6
-এর ভিতরে রাখা হবে -
16 নম্বর বলটিকে 1+6 =7
-এর ভিতরে রাখা হবে -
17 নম্বর বলটিকে 1+7 =8
এর ভিতরে রাখা হবে -
18 নম্বর বলটি 1+8 =9
এর ভিতরে রাখা হবে -
19 নম্বর বলটি 1+9 =10
এর ভিতরে রাখা হবে -
20 নম্বর বলটিকে 2+0 =2
-এর ভিতরে রাখা হবে -
21 নম্বর বলটি 2+1 =3
এর ভিতরে রাখা হবে -
22 নম্বর বলটি 2+2 =4
এর ভিতরে রাখা হবে -
23 নম্বর বলটিকে 2+3 =5
-এর ভিতরে রাখা হবে -
24 নম্বর বলটি 2+4 =6
এর ভিতরে রাখা হবে -
25 নম্বর বলটিকে 2+5 =7
-এর ভিতরে রাখা হবে
তাই বক্স 6 এবং 7 এ সর্বোচ্চ সংখ্যক বল রয়েছে, তাই উত্তর হল 2
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
dict:=একটি নতুন মানচিত্র
-
আমি l থেকে r রেঞ্জের জন্য, কর
-
মোট:=0
-
i এর প্রতিটি ডিজিট j এর জন্য, do
-
মোট :=মোট + j
-
-
যদি টোটাল ডিক্টে না থাকে, তাহলে
-
dict[মোট] :=0
-
-
dict[মোট] :=dict[মোট] + 1
-
-
dict
-এ সমস্ত কীগুলির জন্য সর্বাধিক সমস্ত মান ফেরত দিন
উদাহরণ (পাইথন)
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
def solve(l, r): dict={} for i in range(l, r+1): total=0 for j in str(i): total += int(j) if(total not in dict): dict[total] = 0 dict[total] += 1 return max([dict[i] for i in dict]) l = 15 r = 25 print(solve(l, r))
ইনপুট
15, 25
আউটপুট
1