কম্পিউটার

C++ এ একই অ্যারেতে গড় উপস্থিত সহ জোড়া গণনা করুন


আমাদেরকে পূর্ণসংখ্যার একটি অ্যারে দেওয়া হয়েছে যাতে অ্যারের প্রতিটি উপাদান পরিসরে থাকে [- 1000,1000]। লক্ষ্য হল অ্যারের উপাদানগুলির জোড়া খুঁজে বের করা যাতে তাদের গড় সেই অ্যারেতে উপস্থিত থাকে। যদি অ্যারে হয় arr[]=[1,2,3,4]। তাহলে জোড়া হবে (1,3) এবং (2,4) কারণ 1,3 এর গড় 2 এবং 2,4 এর গড় 3 এবং 2 এবং 3 উভয়ই অ্যারেতে উপস্থিত রয়েছে। গণনা হবে 2।

আসুন উদাহরণ দিয়ে বুঝতে পারি।

ইনপুট − arr[]={ -1,2,5,-3,8,10 }

আউটপুট − একই অ্যারেতে গড় উপস্থিত জোড়ার সংখ্যা হল − 2

ব্যাখ্যা − জোড়া যেমন তাদের গড় arr [] এ উপস্থিত থাকে − (-1,5) গড় হল 2, (2,8) গড় হল 5৷ Count=2

ইনপুট − arr[] ={1,3,2,5,10,6}

আউটপুট − একই অ্যারেতে গড়ে উপস্থিত জোড়ার সংখ্যা হল −3

ব্যাখ্যা − জোড়া যেমন তাদের গড় arr[] এ উপস্থিত থাকে − (1,3) গড় হল 2, (1,5) গড় হল 3, (2,10) গড় হল 6৷ Count=3৷

নিচের প্রোগ্রামে ব্যবহৃত পদ্ধতিটি নিম্নরূপ

আমরা প্রথমে অ্যারের সমস্ত উপাদানের জন্য একটি ফ্রিকোয়েন্সি অ্যারে তৈরি করব। ফ্রিকোয়েন্সি অ্যারের আকার মূল অ্যারের আকারের দ্বিগুণ কারণ সেখানে নেতিবাচক উপাদানও থাকতে পারে।

নেতিবাচক সংখ্যার ফ্রিকোয়েন্সি সূচক 0 থেকে সূচক 1000 পর্যন্ত শুরু হবে। এবং ধনাত্মক সংখ্যার ফ্রিকোয়েন্সি সূচক 1000 থেকে 2000 পর্যন্ত শুরু হবে।

প্রতিটি অ শূন্য ফ্রিকোয়েন্সির জন্য এটি করুন −

  1. গণনা করতে (freq[i]) * (freq[i]-1)/2 যোগ করুন, কারণ দুটি একই সংখ্যার গড় হল সংখ্যা। যদি অ্যারেতে 5 2’স থাকে। তাহলে মোট জোড়া হবে (5*(5-1))/2=10।

  2. উপরের ফ্রিকোয়েন্সি[i] যদি শূন্য না হয় তাহলে বিকল্প ফ্রিকোয়েন্সির জন্য ট্রাভার্সিং শুরু করুন কারণ ধারাবাহিক সংখ্যার গড় আছে যা ফ্লোটিং-পয়েন্ট এবং অ্যারেতে থাকবে না।

  3. যদি freq[j] পাওয়া যায় যা অ-শূন্য এবং freq[ (i+j)/2 ]ও অ-শূন্য। তারপর গণনায় freq[i]*freq[j] যোগ করুন (যেমন প্রতিটি সংখ্যা প্রতিটি অন্য সংখ্যার সাথে জোড়া হতে পারে)।

  • একটি পূর্ণসংখ্যা অ্যারে অ্যারে নিন[]

  • ফাংশন average_pair(arr, size) অ্যারে এবং এর আকার নেয় এবং জোড়ার গণনা প্রদান করে যাতে জোড়ার উপাদানগুলির গড় অ্যারে অ্যারেতেও উপস্থিত থাকে।

  • প্রাথমিক গণনা 0 হিসাবে নিন এবং N=1000 শুরু করুন।

  • সাইজ_2=2*N+1 ( রেঞ্জ [-1000 থেকে 1000]

    হিসাবে ফ্রিকোয়েন্সি অ্যারের দৈর্ঘ্য গণনা করুন
  • প্রাথমিকভাবে 0 দিয়ে ফ্রিকোয়েন্সি অ্যারে শুরু করুন।

  • পপুলেট ফ্রিকোয়েন্সি অ্যারে যাতে নেতিবাচক উপাদানগুলির ফ্রিকোয়েন্সি 0 থেকে 1000 পর্যন্ত হয় এবং ধনাত্মক উপাদানগুলির পরে। এর জন্য ইনডেক্সে N যোগ করুন।

  • প্রতিটি উপাদানের জন্য arr[i] ফ্রিকোয়েন্সি অ্যারে আপডেট করুন arr_freq[arr[i] + N]++;

  • এখন i=0 থেকে i পর্যন্ত ফ্রিকোয়েন্সি অ্যারে অতিক্রম করুন

  • শর্ত 1 অনুযায়ী গণনা করতে প্রতিটি অ-শূন্য ফ্রিকোয়েন্সির জন্য (ফ্রিকোয়েন্সি[i]) * (freq[i]-1)/2 যোগ করুন।

  • এখন যেহেতু arr_freq[i] অ-শূন্য, প্রতিটি বিকল্প ফ্রিকোয়েন্সি অতিক্রম করুন।

  • temp_2 কে arr_freq[(i + j) / 2] হিসাবে গণনা করুন।

  • এখন যদি temp_2 অ-শূন্য হয় এবং arr_freq[j] অ-শূন্য হয় তাহলে শর্ত 3 পূরণ হয়। পণ্যের সাথে গণনা আপডেট করুন (arr_freq[i] * arr_freq[j]);

  • সমস্ত পুনরাবৃত্তি শেষ হওয়ার পরে, গণনায় এই ধরনের জোড়ার মোট সংখ্যা থাকবে।

  • ফলাফল হিসাবে রিটার্ন গণনা।

উদাহরণ

#include <bits/stdc++.h>
using namespace std;
int average_pair(int arr[], int size_1){
   int count = 0;
   int N = 1000;
   int size_2 = (2 * N) + 1;
   int arr_freq[size_2] = { 0 };
   for (int i = 0; i < size_1; i++){
      int temp = arr[i];
      arr_freq[temp + N]++;
   }
   for (int i = 0; i < size_2; i++){
      if (arr_freq[i] > 0){
         int check = (arr_freq[i]) * (arr_freq[i] - 1);
         count += check / 2;
         for (int j = i + 2; j < 2001; j += 2){
            int temp_2 = arr_freq[(i + j) / 2];
            if (arr_freq[j] > 0 && temp_2 > 0){
               count += (arr_freq[i] * arr_freq[j]);
            }
         }
      }
   }
   return count;
}
int main(){
   int arr[] = { 2, 3, 1, 8, 9, 10 };
   int size = sizeof(arr) / sizeof(arr[0]);
   cout<<"Count of pairs with average present in the same array are: "<<average_pair(arr, size);
   return 0;
}

আউটপুট

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

উৎপন্ন করবে
Count of pairs with average present in the same array are: 2

  1. C++ এ একটি অ্যারেতে বিভাজ্য জোড়া গণনা করুন

  2. C++ এ একই প্রতিবেশীদের সাথে অক্ষর গণনা করুন

  3. উভয় পাশে জোড় বা বিজোড় সংখ্যার একই গণনা সহ অ্যারে সূচকের জন্য C++ প্রোগ্রাম?

  4. C++ এ উভয় পাশে জোড় বা বিজোড় সংখ্যার একই গণনা সহ অ্যারে সূচক