بکندباز

یک آرایه (لیست) از اعداد صحیح مثبت داده شده‌است. تابعی بنویسید که تعداد جفتهای اندیس (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)

پاسخ های کاربران به این تمرین

user-ixnb
امتیاز:‌ 1944
تصحیح اتوماتیک 0 0
‎پایتون‎
9 بهمن 1403

برای مشاهده پاسخ باید ابتدا وارد شده و قفل پاسخ را باز کنید

user-ixnb
امتیاز:‌ 1944
تصحیح اتوماتیک 0 0
‎پایتون‎
9 بهمن 1403

برای مشاهده پاسخ باید ابتدا وارد شده و قفل پاسخ را باز کنید

Amin
امتیاز:‌ 1944
تصحیح اتوماتیک 0 0
‎پایتون‎
9 بهمن 1403

برای مشاهده پاسخ باید ابتدا وارد شده و قفل پاسخ را باز کنید

MarsBoy
امتیاز:‌ 1944
تصحیح اتوماتیک 0 0
‎پایتون‎
9 بهمن 1403

برای مشاهده پاسخ باید ابتدا وارد شده و قفل پاسخ را باز کنید

تمرینات مرتبط