একটি ইন্টিজার অ্যারে দেওয়া আছে। লক্ষ্য হল সেসব সংখ্যা গণনা করা যাতে সকল উপাদানের যোগফল এবং সেই উপাদানের মধ্যে निरপেক্ষ পার্থক্য k-এর চেয়ে বড়।
প্রথমে অ্যারের সব উপাদানের যোগফল (sum) বের করা হয়। তারপর প্রতিটি উপাদান arr[i] এর জন্য যাচাই করা হয়: sum - 2*arr[i] > k কিনা। কারণ sum-এ arr[i] একবার থাকায়, তাকে দুবার বিয়োগ করলে বাকি উপাদানগুলোর যোগফলের সাথে তার পার্থক্য পাওয়া যায়। শর্ত পূরণ করলে count বাড়ানো হয়।
উদাহরণ
ইনপুট: arr[] = { 1,2,3,0,3,2,0,1 }, k=10
আউটপুট: উপাদান সংখ্যা: ২
ব্যাখ্যা: উপাদানগুলোর যোগফল ১২। ১২-১-১=১০, ১২-২-২=৮, ১২-৩-৩=৬, ১২-০-০=১২। শুধু ১২ > ১০, তাই ২টি উপাদান (০গুলো) শর্ত পূরণ করে।
ইনপুট: arr[] = { 1,1,1,1,1 }, k=10
আউটপুট: উপাদান সংখ্যা: ০
ব্যাখ্যা: যোগফল ৫। প্রতিটি ১-এর জন্য ৫-১-১=৩ < ১০।
অ্যাপ্রোচ
- ইন্টিজার অ্যারে arr[] নেওয়া হয়।
numberCount(int arr[], int n, int k)ফাংশন অ্যারে, দৈর্ঘ্য এবং k গ্রহণ করে শর্ত পূরণকারী উপাদান সংখ্যা রিটার্ন করে।- প্রাথমিক count ০।
- সব উপাদানের যোগফল sum-এ হিসাব করা হয়।
- for লুপে i=0 থেকে i
k হয়, count বাড়ানো হয়।
উদাহরণ কোড
#include <bits/stdc++.h>
#include <math.h>
using namespace std;
int numberCount(int arr[], int n, int k) {
int count = 0;
int sum = 0;
for (int i = 0; i < n; i++) {
sum += arr[i];
}
for (int i = 0; i < n; i++) {
if (abs(sum - arr[i] - arr[i]) > k) {
count++;
}
}
return count;
}
int main() {
int Arr[] = { 1,2,3,4 };
int len = sizeof(Arr) / sizeof(Arr[0]);
int K = 5;
cout << endl << "Count of elements: " << numberCount(Arr, len, K);
return 0;
}
আউটপুট
Count of elements: 2