ধরুন আমাদের একটি সংখ্যা n আছে, আমাদের পরীক্ষা করতে হবে n-এর জোড় স্থানে অঙ্কের গুণফল n-এর বিজোড় স্থানে অঙ্কের যোগফল দ্বারা বিভাজ্য কি না। স্থানগুলি ডান থেকে বামে গণনা শুরু হয়। সবচেয়ে ডান স্থানে 1.
সুতরাং, যদি ইনপুটটি n =59361 এর মত হয়, তাহলে আউটপুটটি True হবে (1*3*5) =(6+9)।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- digit_count :=প্রদত্ত সংখ্যার সংখ্যা সংখ্যা n
- মোট :=0, উৎপাদন :=1
- যখন n> 0, do
- যদি digit_count জোড় হয়, তাহলে
- prod :=prod * n এর শেষ সংখ্যা
- অন্যথায়,
- মোট :=মোট + n এর শেষ সংখ্যা
- n :=(n / 10) এর ভাগফল
- digit_count :=digit_count - 1
- যদি digit_count জোড় হয়, তাহলে
- যদি গুণফল মোট দ্বারা বিভাজ্য হয়, তাহলে
- সত্য ফেরান
- মিথ্যে ফেরত দিন
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ কোড
from math import log10 def solve(n): digit_count = int(log10(n))+1 total = 0 prod = 1 while n > 0 : if digit_count % 2 == 0 : prod *= n % 10 else: total += n % 10 n = n // 10 digit_count -= 1 if prod % total == 0: return True return False n = 59361 print(solve(n))
ইনপুট
59361
আউটপুট
True