আমাদের পূর্ণসংখ্যার একটি অ্যারে দেওয়া হয়। লক্ষ্য হল অ্যারেতে সর্বাধিক সংখ্যাগুলি খুঁজে বের করা যা প্রদত্ত ক্রিয়াকলাপগুলি সম্পাদন করার পরে সমান হয় −
-
দুটি উপাদান নির্বাচন করুন a[i] এবং a[j] যেমন i !=j এবং
-
বৃদ্ধি a[i] এবং হ্রাস a[j] ( a[i]++,a[j]-- )
আমরা অ্যারের যোগফল নেব এবং উপাদানের সংখ্যা দিয়ে ভাগ করব। যদি N অ্যারের আকার হয় তাহলে
যদি যোগফল N দ্বারা বিভাজ্য হয় তবে সমান সংখ্যাগুলিও N হবে অন্যথায় সমান সংখ্যাগুলি N-1 হবে৷
ইনপুট
Arr[]= { 1,2,3 }
আউটপুট
Maximum count of equal numbers : 3
ব্যাখ্যা − প্রথম ধাপের পরে Arr[] ={ 2,2,2 } বৃদ্ধি 1 এবং হ্রাস 3 উপাদানগুলির যোগফল হল 1+2+3=6, 6%3==0, তাই সমান সংখ্যা=3
ইনপুট
Arr[]= { 1,2,4 }
আউটপুট
Maximum count of equal numbers : 2
ব্যাখ্যা − প্রথম ধাপের পরে Arr[] ={ 1,3,3 } বৃদ্ধি 2 এবং হ্রাস 4 উপাদানগুলির যোগফল হল 1+2+4=7, 7%3==1, তাই সমান সংখ্যা=3-1=2পি>
নিম্নলিখিত প্রোগ্রামে ব্যবহৃত পদ্ধতি
-
পূর্ণসংখ্যা অ্যারে Arr[] পূর্ণসংখ্যা সংরক্ষণ করতে ব্যবহৃত হয়।
-
পূর্ণসংখ্যা 'আকার' অ্যারের দৈর্ঘ্য সঞ্চয় করে।
-
ফাংশন maxEqual( int arr[], int n) একটি অ্যারে নেয়, এর আকার ইনপুট হিসাবে এবং একটি প্রদত্ত ক্রিয়াকলাপ প্রয়োগ করার পরে অ্যারেতে উপস্থিত সমান সংখ্যার সর্বাধিক গণনা প্রদান করে৷
-
প্রথমে আমরা অ্যারের উপাদানগুলির যোগফল গণনা করব এবং 'সমষ্টি'
এ সংরক্ষণ করব -
এখন n আকারে যোগফলের বিভাজ্যতা পরীক্ষা করুন (সমষ্টি%n==0)।
-
বিভাজ্য হলে n
ফেরত দিন -
অন্যথায় ফলাফল হিসাবে n-1 ফেরত দিন।
উদাহরণ
#include <bits/stdc++.h> using namespace std; int maxEqual(int arr[], int n){ int sum = 0; for (int i = 0; i < n; i++){ sum += arr[i]; } if (sum%n==0){ return n; } return n-1; } int main(){ int Arr[] = { 1, 4, 1, 2}; // size of an array int size =4; cout <<" Maximum count of equal numbers :"<< maxEqual(Arr,size); return 0; }
আউটপুট
Maximum count of equal numbers: 4