কম্পিউটার

সংখ্যার বর্গ পাইথনে দুটি সংখ্যার গুণফলের সমান উপায়ের সংখ্যা খুঁজে বের করার প্রোগ্রাম


ধরুন আমাদের দুটি অ্যারে সংখ্যা 1 এবং সংখ্যা 2 আছে, আমাদের এই দুটি নিয়ম অনুসরণ করে গঠিত ট্রিপলেট (টাইপ 1 এবং টাইপ 2) খুঁজে বের করতে হবে -

  • ট্রিপলেট (i, j, k) যদি nums1[i]^2 =nums2[j] * nums2[k] যেখানে [0 <=i
  • ট্রিপলেট (i, j, k) যদি nums2[i]^2 =nums1[j] * nums1[k] যেখানে [0 <=i <সংখ্যার আকার 2 এবং 0 <=j

সুতরাং, যদি ইনপুটটি nums1 =[7,4] nums2 =[5,2,8,9] এর মত হয়, তাহলে আউটপুট হবে 1 কারণ সেখানে টাইপ 1, (1,1,2), সংখ্যা 1 এর একটি ট্রিপলেট রয়েছে। [1]^2 =সংখ্যা2[1] * সংখ্যা2[2] =(16 =2*8)।

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব:

  • cnt1 :=প্রতিটি উপাদান ধরে রাখার জন্য একটি মানচিত্র এবং এর সংখ্যা1
  • cnt2 :=প্রতিটি উপাদান এবং এর সংখ্যা 2 ধরে রাখার জন্য একটি মানচিত্র
  • একটি ফাংশন triplets() সংজ্ঞায়িত করুন। এটি arr1, arr2
  • লাগবে
  • উত্তর :=0
  • প্রতিটি t, v এর জন্য arr1 এর আইটেম() তে, করুন
    • k :=arr2[t] যদি এটি থাকে, অন্যথায় 0
    • tmp :=k*(k - 1) / 2
    • sq :=t * t
    • arr2 তে প্রতিটি m জন্য, করুন
      • যদি m
      • tmp :=tmp + (arr2[m] যদি থাকে, অন্যথায় 0) * (arr2[sq/m এর ভাগফল] যদি থাকে, অন্যথায় 0)
  • উত্তর :=ans + tmp * v
  • উত্তর ফেরত দিন
  • মূল পদ্ধতি থেকে, নিম্নলিখিতগুলি করুন−
  • রিটার্ন ট্রিপলেট(cnt1, cnt2) + triplets(cnt2, cnt1)
  • উদাহরণ

    আসুন আরও ভাল বোঝার জন্য নিম্নলিখিত বাস্তবায়ন দেখি—

    from collections import Counter
    def solve(nums1, nums2):
       cnt1 = Counter(nums1)
       cnt2 = Counter(nums2)
    
       def triplets(arr1, arr2):
          ans = 0
          for t, v in arr1.items():
             k = arr2.get(t, 0)
             tmp = k * (k - 1) // 2
             sq = t * t
             for m in arr2:
                if m < t and sq % m == 0:
                   tmp += arr2.get(m, 0) * arr2.get(sq // m, 0)
                ans += tmp * v
          return ans
    
       return triplets(cnt1, cnt2) + triplets(cnt2, cnt1)
    nums1 = [7,4]
    nums2 = [5,2,8,9]
    print(solve(nums1, nums2))

    ইনপুট

    [7,4],[5,2,8,9]

    আউটপুট

    2

    1. দুটি জোড়া সংখ্যা খুঁজে বের করার প্রোগ্রাম যেখানে পাইথনে এই জোড়ার যোগফলের পার্থক্য কম করা হয়

    2. পাইথনে n পর্যন্ত যোগ করার জন্য ফিবোনাচি সংখ্যার ন্যূনতম সংখ্যা খুঁজে বের করার প্রোগ্রাম?

    3. কয়েকটি সংখ্যার গুণফল খুঁজে বের করার প্রোগ্রাম যার যোগফল পাইথনে দেওয়া হয়েছে

    4. আমরা পাইথনে একটি বার্তা ডিকোড করতে পারি এমন কয়েকটি উপায় খুঁজে বের করার প্রোগ্রাম