একটি সংখ্যা n দেওয়া থাকলে, আমাদের যাচাই করতে হবে যে n-এর ডান পাশ থেকে গণনা করলে জোড় জায়গায় থাকা অঙ্কগুলির গুণফল কি বিজোড় জায়গার অঙ্কগুলির যোগফল দ্বারা বিভাজ্য। ডান পাশের প্রথম অঙ্ককে ১ নম্বর জায়গা বিবেচনা করা হয়।
উদাহরণ
ইনপুট: n = 59361
আউটপুট: True
ব্যাখ্যা: ডান পাশ থেকে জোড় জায়গার অঙ্কগুলো হলো ১, ৩, ৫ (গুণফল = ১৫)। বিজোড় জায়গার অঙ্কগুলো হলো ৬, ৯ (যোগফল = ১৫)। যেহেতু ১৫, ১৫ দ্বারা বিভাজ্য, তাই ফলাফল True।
সমাধানের ধাপসমূহ
digit_count= সংখ্যাn-এর মোট অঙ্কের সংখ্যা।total = 0(বিজোড় জায়গার যোগফল),prod = 1(জোড় জায়গার গুণফল)।- যখন
n > 0:- যদি
digit_countজোড় হয়, তবেprod *= n % 10। - অন্যথায়
total += n % 10। n = n // 10(শেষ অঙ্ক বাদ দিন)।digit_count -= 1।
- যদি
- যদি
prod % total == 0হয় তবেTrueফেরত দিন, অন্যথায়False।
উদাহরণ কোড
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)) # Output: True
ইনপুট
59361
আউটপুট
True