در این چالش، باید بررسی کنید که آیا یک عدد به طور دقیق بر ترکیبی از ارقام خود بخشپذیر است یا خیر. سه شرط ممکن برای آزمایش وجود دارد:
- عدد دادهشده به طور دقیق بر هر یک از ارقام خود (به جز صفر) بخشپذیر باشد.
- عدد دادهشده به طور دقیق بر مجموع ارقام خود بخشپذیر باشد.
- عدد دادهشده به طور دقیق بر حاصلضرب ارقام خود بخشپذیر باشد.
با توجه به یک عدد صحیح n، تابعی پیادهسازی کنید که خروجی زیر را برگرداند:
- اگر همه آزمایشها درست باشند، رشته
"Perfect"برگردانده شود. - اگر برخی از آزمایشها درست باشند، تعداد آزمایشهای درست (۱ یا ۲) برگردانده شود.
- اگر همه آزمایشها نادرست باشند، رشته
"Indivisible"برگردانده شود.
مثال
digital_division(21) ➞ 1
# فقط بر مجموع ارقام خود بخشپذیر است (۲ + ۱ = ۳).
digital_division(128) ➞ 2
# بر هر یک از ارقام خود بخشپذیر است.
# بر حاصلضرب ارقام خود بخشپذیر است (۱ * ۲ * ۸ = ۱۶).
نمونه ورودی و خروجی
digital_division(100) ➞ 2
digital_division(12) ➞ "Perfect"
digital_division(31) ➞ "Indivisible"
نکات
- هنگام بررسی بخشپذیری عدد بر هر یک از ارقام خود، ارقام صفر را نادیده بگیرید (به مثال سوم مراجعه کنید).
- اگر عدد حداقل یک رقم صفر داشته باشد، نمیتواند بر حاصلضرب ارقام خود بخشپذیر باشد (تقسیم بر صفر).
- هر عدد یکرقمی بزرگتر از ۰ به طور پیشفرض
"Perfect"است. - عدد دادهشده همیشه یک عدد صحیح مثبت بزرگتر از ۰ خواهد بود.
digital_division(100) ➞ 2
digital_division(12) ➞ "Perfect"
digital_division(31) ➞ "Indivisible"
digital_division(21) ➞ 1
digital_division(128) ➞ 2
digital_division(111) ➞ "Perfect"
digital_division(40) ➞ 2
digital_division(35) ➞ "Indivisible"
digital_division(666) ➞ 2
برای ثبت پاسخ خود، ابتدا باید در سایت وارد شوید.
سلام وقت شما بخیر
آیا اگر ورودی 100 باشد نباید خروجی پرفکت باشد؟
چرا که :
1 + 0 + 0 = 1
1 * 0 * 0 = 1 (صرف نظر از 0 ها)
100 بر 1 هم که بخش پذیر است در تمامی مراحل پس باید پرفکت برگردانده شود
سلام. وقت بخیر
خیر. طبق نکات گفته شده، «اگر عدد حداقل یک رقم صفر داشته باشد، نمیتواند بر حاصلضرب ارقام خود بخشپذیر باشد (تقسیم بر صفر).» پس شرط سوم رو نداره. ارقام صفر فقط برای شرط اول در نظر گرفته نمیشن اما برای دو شرط بعدی باید همه رقم ها در نظر گرفته بشه