یک آرایه (لیست) از اعداد صحیح مثبت داده شدهاست. تابعی بنویسید که تعداد جفتهای اندیس (i, j) را برگرداند که در آن i < j و مجموع ارقام اعداد در این اندیسها با هم برابر باشند.
راهنمایی: اگر n عدد با مجموع ارقام یکسان وجود داشته باشد، تعداد جفتهای ممکن از رابطهٔ n*(n-1)/2 محاسبه میشود.
مثال:
ورودی: [123, 456, 78]
خروجی: 1
توضیح:
- مجموع ارقام ۱۲۳ برابر با ۱+۲+۳ = ۶ است.
- مجموع ارقام ۴۵۶ برابر با ۴+۵+۶ = ۱۵ است.
- مجموع ارقام ۷۸ برابر با ۷+۸ = ۱۵ است.
تنها جفت معتبر (۱، ۲) است که مجموع ارقام هر دو ۱۵ میباشد. - مثال دیگر: count_pairs([111, 3, 21, 30]) برابر با ۶ میشود چون هر ۴ عدد مجموع ارقام برابر دارند و در نتیجه ۶=۲/(۴×۳)
نمونه ورودی و خروجی
count_pairs([12, 34]) ➞ 0
count_pairs([111, 3, 21, 30]) ➞ 6
count_pairs([5, 5, 5]) ➞ 3
۲. در نظر گرفتن اعداد صفر (اگر مجاز باشند) نیز باید بررسی شود.
۳. پیچیدگی زمانی این الگوریتم O(n * k) است که n طول آرایه و k تعداد ارقام هر عدد است.
self.assertEqual(count_pairs([12, 34]), 0) self.assertEqual(count_pairs([111, 3, 21, 30]), 6) self.assertEqual(count_pairs([5, 5, 5]), 3)
پاسخ های کاربران به این تمرین
برای مشاهده پاسخ باید ابتدا وارد شده و قفل پاسخ را باز کنید
برای مشاهده پاسخ باید ابتدا وارد شده و قفل پاسخ را باز کنید
برای مشاهده پاسخ باید ابتدا وارد شده و قفل پاسخ را باز کنید
برای مشاهده پاسخ باید ابتدا وارد شده و قفل پاسخ را باز کنید