কম্পিউটার

অবিন্যস্ত জোড়া (i,j) গণনা করুন যাতে a[i] এবং a[j] এর গুণফল C++ এ দুটির শক্তি


আমাদের N উপাদানের একটি অ্যারে দেওয়া হয়েছে। লক্ষ্য হল সমস্ত জোড়ার (Arr[i],Arr[j]) সংখ্যা খুঁজে বের করা যার একটি সমষ্টি আছে যা একটি নিখুঁত বর্গ যেমন i!=j। সেটা হল Arr[i]+Arr[j] হল একটি নিখুঁত বর্গ।

আমরা জোড়ার যোগফল গণনা করে এটি করব এবং সেই যোগফলের বর্গমূল বর্গমূলের তল মানের সমান কিনা তা পরীক্ষা করব। sqrt(Arr[i]+Arr[j])-floor( sqrt(Arr[i]+Arr[j] )==0.

উদাহরণ দিয়ে বোঝা যাক।

ইনপুট − Arr[]={ 4,3,2,1,2,4 } N=6

আউটপুট − নিখুঁত বর্গ − 2

যোগফল সহ জোড়ার সংখ্যা

ব্যাখ্যা

Arr[1]+Arr[3]=4, sqrt(4)-floor(4)=0 4 is a perfect square.
Arr[2]+Arr[4]=4, sqrt(4)-floor(4)=0 4 is a perfect square.
Rest all pairs have sum 7,6,5,8 which are not perfect squares.

ইনপুট − Arr[]={ 3,3,3,3,3} N=5

আউটপুট − নিখুঁত বর্গ − 0

যোগফল সহ জোড়ার সংখ্যা

ব্যাখ্যা − সমস্ত জোড়ার যোগফল =6, যা একটি নিখুঁত বর্গ নয়।

নিম্নলিখিত প্রোগ্রামে ব্যবহৃত পদ্ধতি

  • আমরা একটি পূর্ণসংখ্যার অ্যারে নিই Arr[] এলোমেলো সংখ্যার সাথে শুরু।

  • একটি পরিবর্তনশীল n নিন যা Arr[] এর দৈর্ঘ্য সংরক্ষণ করে।

  • ফাংশন কাউন্টপেয়ার্স(int arr[], int n) একটি অ্যারে নেয়, এটির দৈর্ঘ্য ইনপুট হিসাবে এবং যোগফল থাকে যা একটি নিখুঁত বর্গক্ষেত্র।

  • জোড়ার প্রতিটি উপাদানের জন্য লুপের জন্য দুটি ব্যবহার করে ট্রাভার্স অ্যারে।

  • 0<=i

  • arr[i] এর যোগফল গণনা করুন, arr[j] ধনাত্মক।

  • যোগফলের বর্গমূলকে sqrt(সমষ্টি) হিসাবে গণনা করুন।

  • এখন পরীক্ষা করুন sqr-floor(sqr)==0 কিনা। যার অর্থ যোগফল একটি নিখুঁত বর্গ। যদি সত্য বৃদ্ধির সংখ্যা।

  • সমস্ত লুপ গণনার শেষে মোট জোড়ার সংখ্যা থাকবে যার যোগফল হবে নিখুঁত বর্গ।

  • ফলাফল হিসাবে গণনা ফেরত দিন।

উদাহরণ

#include <bits/stdc++.h>
#include <math.h>
using namespace std;
int countPairs(int arr[], int n){
   int count=0;
   int prod=0;
   for(int i=0;i<n-1;i++){
      for(int j=i+1;j<n;j++){
         prod=arr[i]*arr[j];
         if( ceil(log2(prod))==floor(log2(prod)) ){
            count++;
            //cout<<endl<<"a :"<<arr[i]<<" b :"<<arr[j]; //to print
         }
      }
   }  
   return count;
}
int main(){
   int arr[] = { 2, 5, 8, 16, 128 };
   int n = sizeof(arr) / sizeof(arr[0]);
   cout <<endl<<"Pairs whose product is power of 2:"<<countPairs(arr, n);
   return 0;
}

আউটপুট

যদি আমরা উপরের কোডটি চালাই তবে এটি নিম্নলিখিত আউটপুট −

উৎপন্ন করবে
Pairs whose product is power of 2:6

  1. C++ এ A[i] <B[j] <C[k] ট্রিপলেট গণনা করুন

  2. একটি অ্যারেতে জোড়ার সংখ্যা যার যোগফল C++ এ একটি নিখুঁত বর্গ

  3. ট্রিপলেটের সংখ্যা গণনা করুন (a, b, c) যেমন a^2 + b^2 =c^2 এবং 1<=a<=b<=c<=n C++ এ

  4. C++ এ i <j <k এবং a[i] <a[j] <a[k] এর চেয়ে একটি অ্যারেতে সর্বাধিক ট্রিপলেটের সমষ্টি খুঁজুন