ধরুন আমাদের একটি সংখ্যা n আছে, আমাদের পরীক্ষা করতে হবে এই সংখ্যার সমস্ত উপ-সংখ্যার অনন্য অঙ্কের গুণফল আছে কি না। আমরা জানি, n ডিজিটের নম্বরে n*(n+1)/2 উপ-সংখ্যা রয়েছে। উদাহরণস্বরূপ, 135-এর উপ-সংখ্যাগুলি হল 1, 3, 5, 13, 35, 135৷ এবং একটি সংখ্যার অঙ্কের গুণফল হল তার অঙ্কগুলির গুণফল৷
সুতরাং, যদি ইনপুটটি n =235 এর মত হয়, তবে আউটপুটটি True হবে কারণ সাব সংখ্যাগুলি হল [2, 3, 5, 23, 35, 235], অঙ্কের পণ্যগুলি হল [2, 3, 5, 6, 15, 30 ]
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
একটি ফাংশন dig_prod() সংজ্ঞায়িত করুন। এটি সংখ্যা গ্রহণ করবে
- পণ্য :=1
- অঙ্কে প্রতিটি d-এর জন্য, করুন
- পণ্য :=পণ্য * d
- পণ্য ফেরত দিন
- প্রধান পদ্ধতি থেকে নিম্নলিখিতগুলি করুন:
- num_str :=num as string
- দৈর্ঘ্য :=num_str এর আকার
- সংখ্যা :=আকারের দৈর্ঘ্যের একটি তালিকা, এবং প্রাথমিকভাবে সমস্ত মান শূন্য
- prod_set :=একটি নতুন খালি সেট
- আমি 0 থেকে দৈর্ঘ্যের রেঞ্জের জন্য, কর
- সংখ্যা[i] :=num_str[i] পূর্ণসংখ্যা হিসাবে
- আমি 0 থেকে দৈর্ঘ্য - 1 রেঞ্জের জন্য, কর
- j এর জন্য i থেকে দৈর্ঘ্য - 1, do
- আইটেম :=dig_prod(সংখ্যা[সূচি i থেকে j])
- যদি আইটেমটি prod_set এ থাকে, তাহলে
- মিথ্যে ফেরত দিন
- অন্যথায়,
- prod_set এ আইটেম ঢোকান
- j এর জন্য i থেকে দৈর্ঘ্য - 1, do
- সত্য ফেরান
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ
def dig_prod(digits): product = 1 for d in digits: product *= d return product def solve(num): num_str = str(num) length = len(num_str) digits = [None] * length prod_set = set() for i in range(0, length): digits[i] = int(num_str[i]) for i in range(0, length): for j in range(i, length): item = dig_prod(digits[i:j+1]) if item in prod_set: return False else: prod_set.add(item) return True n = 235 print(solve(n))
ইনপুট
235
আউটপুট
True