এই সমস্যাতে, একটি অ্যারে দেওয়া থাকে। আমাদের কাজ হল অ্যারেতে যেকোনো দুটি উপাদানের মডুলো অপারেশন (arr[i] % arr[j]) এর সর্বোচ্চ মান বের করা, অর্থাৎ দুটি উপাদান ভাগ করে যাবশেষের সর্বোচ্চ মান।
উদাহরণ
ইনপুট: array = {3, 6, 9, 2, 1}
আউটপুট: 6
ব্যাখ্যা: 6 % 9 = 6 যা সবচেয়ে বড় বাকি।
অপ্টিমাইজড লজিক
x % y এর মান সর্বোচ্চ হয় যখন y > x, তখন বাকি = x। সুতরাং অ্যারেতে দুটি সর্বোচ্চ উপাদান নিলে (দ্বিতীয় সর্বোচ্চ এবং সর্বোচ্চ) সর্বোচ্চ বাকি পাওয়া যায়। অ্যারে সর্ট করে দ্বিতীয় সর্বোচ্চ উপাদানটি ফেরত দিন।
C++ প্রোগ্রাম উদাহরণ
#include <bits/stdc++.h>
using namespace std;
int maxRemainder(int arr[], int n) {
// সব উপাদান একই কিনা চেক করুন
bool hasSameValues = true;
for (int i = 1; i < n; i++) {
if (arr[i] != arr[i - 1]) {
hasSameValues = false;
break;
}
}
if (hasSameValues) return 0;
sort(arr, arr + n);
return arr[n - 2]; // দ্বিতীয় সর্বোচ্চ উপাদান
}
int main() {
int arr[] = {3, 6, 9, 2, 1};
int n = sizeof(arr) / sizeof(arr[0]);
cout << "The maximum remainder on dividing two elements of the array is " << maxRemainder(arr, n);
return 0;
}
আউটপুট
The maximum remainder on dividing two elements of the array is 6