আমাদের একটি ইন্টিজার অ্যারে দেওয়া আছে। অপারেশন: দুটি এলিমেন্ট a[i], a[j] (i!=j) বেছে নিয়ে a[i]++, a[j]--। এই অপারেশন বারবার করে অ্যারেতে সমান সংখ্যার সর্বোচ্চ কাউন্ট বের করা।
সমাধান: অ্যারের সাম শুধু। যদি sum % n == 0 হয় তবে সব n টি এলিমেন্ট সমান করা যায় (sum/n)। অন্যথায় n-1 টি এলিমেন্ট সমান করা যায়।
ইনপুট
Arr[]= { 1,2,3 }
আউটপুট
Maximum count of equal numbers : 3
ব্যাখ্যা: Sum=6, 6%3=0 -> সব ৩টি ২ হয়ে যাবে।
ইনপুট
Arr[]= { 1,2,4 }
আউটপুট
Maximum count of equal numbers : 2
ব্যাখ্যা: Sum=7, 7%3=1 -> ২টি ৩ হয়ে যাবে, ১টি ১ থাকবে।
প্রোগ্রামে ব্যবহৃত পদ্ধতি
- maxEqual(int arr[], int n) ফাংশন।
- sum ক্যালকুলেট।
- sum % 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 };
int size = 4;
cout << " Maximum count of equal numbers :" << maxEqual(Arr, size);
return 0;
}
আউটপুট
Maximum count of equal numbers: 4