সমস্যা অনুযায়ী, একটি সেট arr[n] দেওয়া আছে (n = ইন্টিজার এলিমেন্টের সংখ্যা)। টাস্ক হলো সেটের এলিমেন্টগুলো থেকে বের করা যাবে সর্বোচ্চ কতগুলো ডISTINCT ডিফারেন্স এলিমেন্ট (|a-b| রূপে) যা সেটে ইতিমধ্যে নেই। অর্থাৎ, সেটে থাকা এলিমেন্টগুলোর পার্থক্য থেকে সর্বোচ্চ সংখ্যক ডISTINCT এবং বড় পার্থক্য বের করা।
ইনপুট − set = {1, 5}
আউটপুট − Maximum difference elements that can added to a set is: 1
ব্যাখ্যা − সেটে শুধু একটি পার্থক্য: |1-5| = 4
ইনপুট − set = {2, 7, 1, 9}
আউটপুট − Maximum difference elements that can added to a set is: 5
ব্যাখ্যা − পার্থক্যগুলো:
|2-7|=5, |7-1|=6, |1-9|=8, |2-9|=7, |7-9|=2
প্রোগ্রামে ব্যবহৃত পদ্ধতি
- ইন্টিজার অ্যারে
arr[n]ইনপুট নিন। maximum()ফাংশনে:ele,temp,val=arr[0]দিয়ে ইনিশিয়ালাইজ করুন।- লুপ চালিয়ে সব এলিমেন্টের GCD বের করুন (
val = gcd(val, arr[i]))। temp = max(temp, arr[i])দিয়ে সর্বোচ্চ মান বের করুন।total = temp / valএবংmax = total - size।maxরিটার্ন করুন।
উদাহরণ
#include <bits/stdc++.h>
using namespace std;
int maximum(int arr[], int size) {
int ele = arr[0];
int val = ele;
int temp = ele;
for (int i = 1; i < size; i++) {
val = __gcd(val, arr[i]);
temp = max(temp, arr[i]);
}
int total = temp / val;
int max = total - size;
return max;
}
int main() {
int arr[] = {2, 7, 1, 9};
int size = sizeof(arr)/sizeof(arr[0]);
cout << "Maximum difference elements that can added to a set is: " << maximum(arr, size);
return 0;
}
আউটপুট
Maximum difference elements that can added to a set is: 5