ধরুন আমাদের একটি সংখ্যা n আছে। আমাদের এই অবস্থার উপর ভিত্তি করে n-এর ভাজক খুঁজে বের করতে হবে কোনটি ভাল:আমাদের দুটি সংখ্যা আছে p এবং q, যেটির অঙ্কের যোগফল একটি বড় সংখ্যার সাথে অন্যটির চেয়ে ভাল বলা হয়। যখন অঙ্কের যোগফল একই হয়, তখন ছোট সংখ্যাটিই ভালো।
সুতরাং, যদি ইনপুটটি n =180 এর মত হয় তবে আউটপুট 9 হবে কারণ ভাজকগুলি হল [1, 2, 3, 4, 5, 6, 9, 10, 12, 15, 18, 20, 30, 36, 45, 60, 90, 180]। সুতরাং যে সংখ্যার অঙ্কের যোগফল সর্বাধিক [9, 18, 36, 45, 90, 180], তবে তাদের মধ্যে 9টি ভাল সংখ্যা কারণ এর মান ছোট।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- div :=1, md :=1
- 2 থেকে n রেঞ্জের i জন্য, করুন
- k :=i
- যদি n mod i> 0 হয়, তাহলে
- পরবর্তী পুনরাবৃত্তির জন্য যান
- s :=0
- যখন k> 0, do
- s :=s + k mod 10
- k :=k / 10
- যদি s> md, তাহলে
- md :=s
- div :=i
- রিটার্ন ডিভি
উদাহরণ
আরও ভালোভাবে বোঝার জন্য আসুন নিম্নলিখিত বাস্তবায়ন দেখি
def solve(n): div = 1 md = 1 for i in range(2, n + 1): k = i if n % i > 0: continue s = 0 while k > 0: s += k % 10 k /= 10 if s > md: md = s div = i return div n = 180 print(solve(n))
ইনপুট
180
আউটপুট
9