हमें पूर्णांकों की एक सरणी दी गई है। लक्ष्य उन संख्याओं को गिनना है जिनके लिए सभी तत्वों के योग और उस तत्व के बीच का निरपेक्ष अंतर वेरिएबल k से बड़ा है।
हम इसे सरणी के तत्वों का योग प्राप्त करके करेंगे। अब प्रत्येक तत्व arr[i] के लिए, जांचते हैं कि -
sum - 2*arr[i] > k, क्योंकि sum में पहले से ही arr[i] शामिल है इसलिए इसे दो बार घटाते हैं। यदि सही है तो काउंट बढ़ाते हैं।
आइए उदाहरणों से समझते हैं।
इनपुट - arr[]= { 1,2,3,0,3,2,0,1 }, k=10
आउटपुट - तत्वों की संख्या: 2
व्याख्या - तत्वों का योग 12 है
12-1-1=10, 12-2-2=8, 12-3-3=6, 12-0-0=12।
केवल 12 > 10, इसलिए 2 तत्वों (0s) के लिए शर्त सही है।
इनपुट - arr[]= { 1,1,1,1,1 } k=10
आउटपुट - तत्वों की संख्या: 0
व्याख्या - तत्वों का योग 5 है
प्रत्येक 1 के लिए 5-1-1=3 < 10।
नीचे दिए गए प्रोग्राम में उपयोग किया गया दृष्टिकोण
हम यादृच्छिक संख्याओं से आरंभ एक पूर्णांक सरणी arr[] लेते हैं।
फंक्शन numberCount(int arr[], int n, int k) सरणी और उसकी लंबाई को इनपुट के रूप में लेता है और उन तत्वों की गिनती लौटाता है जिनका अन्य सभी तत्वों के योग के साथ निरपेक्ष अंतर k से बड़ा है।
प्रारंभिक काउंट को 0 के रूप में लेते हैं।
सरणी के सभी तत्वों के योग की गणना sum के रूप में करते हैं।
अब पूरी सरणी को i=0 से i
प्रत्येक तत्व arr[i] के लिए, यदि sum-arr[i]-arr[i] > k, तो काउंट बढ़ाते हैं।
लूप के अंत में काउंट को अंतिम परिणाम के रूप में लौटाते हैं।
उदाहरण
#include <bits/stdc++.h> #include <math.h> using namespace std; int numberCount(int arr[],int n, int k){ int count=0; int sum=0; int i; for(i=0;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<<"तत्वों की संख्या: "<<numberCount(Arr,len,K); return 0; } आउटपुट
यदि हम उपरोक्त कोड चलाते हैं तो यह निम्नलिखित आउटपुट उत्पन्न करेगा -
तत्वों की संख्या: 2