কম্পিউটার টিউটোরিয়াল

পাইথনে যোগফল ১ হয় এমন ফ্র্যাকশন জোড়ার সংখ্যা বের করার প্রোগ্রাম


মান লক্ষ্য করুন আমাদের কাছে একটি ফ্র্যাকশন (ভগ্নাংশ) তালিকা আছে যেখানে প্রতিটি ফ্র্যাকশন আলাদা তালিকা [numerator, denominator] হিসেবে দেয়া আছে যা সংখ্যাটি (numerator / denominator) কে প্রতিনিধিত্ব করে। আমাদের কাজ হল যোগফল ১ হয় এমন ফ্র্যাকশন জোড়ার সংখ্যা বের করা।

উদাহরণস্বরূপ, যদি ইনপুট হয় fractions = [[2, 7],[3, 12],[4, 14],[5, 7],[3, 4],[1, 4]], তবে আউটপুট হবে 4, কারণ (2/7 + 5/7), (3/12 + 3/4), (3/4 + 1/4), (4/14 + 5/7) - এই চারটি জোড়ার যোগফল ১।

সমাধানের ধাপসমূহ:
  • d := একটি নতুন ম্যাপ
  • ans := 0
  • প্রতিটি fraction i এর জন্য fractions-এ:
    • x := i[0] (নিউমেরেটর)
    • y := i[1] (ডিনোমিনেটর)
    • g := gcd(x, y)
    • x := x / g, y := y / g (সরল রূপে আনার জন্য)
    • temp_x := y - x
    • temp_y := y
    • যদি (temp_x, temp_y) d-এ থাকে, তবে ans := ans + d[temp_x, temp_y]
    • d[x, y] := 1 + (d[(x, y)] যদি থাকে অন্যথায় 0)
  • ans রিটার্ন করুন।
উদাহরণ কোড
class Solution:
    def solve(self, fractions):
        import math
        d = {}
        ans = 0
        for i in fractions:
            x = i[0]
            y = i[1]
            g = math.gcd(x, y)
            x /= g
            y /= g
            temp_x = y - x
            temp_y = y
            if (temp_x, temp_y) in d:
                ans += d[(temp_x, temp_y)]
            d[(x, y)] = d.get((x, y), 0) + 1
        return ans

ob = Solution()
fractions = [[2, 7],[3, 12],[4, 14],[5, 7],[3, 4],[1, 4]]
print(ob.solve(fractions))
ইনপুট
[[2, 7],[3, 12],[4, 14],[5, 7],[3, 4],[1, 4]]
আউটপুট
4
  1. পাইথন প্রোগ্রাম - n নোড দিয়ে BST-এর সংখ্যা বের করুন

  2. পাইথনে বাইনারি ট্রিতে যেসব পথের যোগফল k তাদের সংখ্যা গুনার প্রোগ্রাম

  3. পাইথনে টার্গেটের চেয়ে বড় পার্থক্য বিশিষ্ট ডিস্টিন্ক্ট পেয়ারের সর্বোচ্চ সংখ্যা গণনা করার প্রোগ্রাম

  4. পাইথনে তালিকা থেকে যুগল যাহার যোগফল বিজোড় সেটিValid পেয়ারের সংখ্যা গণনা করার প্রোগ্রাম