আমাদের পূর্ণসংখ্যার একটি অ্যারে দেওয়া হয়। লক্ষ্য হল অ্যারেতে সর্বাধিক সংখ্যাগুলি খুঁজে বের করা যা প্রদত্ত ক্রিয়াকলাপগুলি সম্পাদন করার পরে সমান হয় −
-
দুটি উপাদান নির্বাচন করুন 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