समस्या कथन
दो पूर्णांक ऐरे even[] और odd[] दिए गए हैं जिनमें क्रमशः लगातार इवन और ऑड एलिमेंट्स हैं, प्रत्येक ऐरे से एक एलिमेंट मिसिंग है। कार्य मिसिंग एलिमेंट्स को ढूंढना है।
उदाहरण
यदि even[] = {10, 8, 6, 16, 12} और odd[] = {3, 9, 13, 7, 11} तो इवन ऐरे से मिसिंग नंबर 14 है और ऑड ऐरे से 5 है।
एल्गोरिदम
- even[] ऐरे से न्यूनतम और अधिकतम इवन एलिमेंट्स को वेरिएबल्स minEven और maxEven में स्टोर करें
- पहले N इवन नंबरों का योग N * (N + 1) होता है। 2 से minEven तक के इवन नंबरों का योग sum1 और 2 से maxEven तक के इवन नंबरों का योग sum2 निकालें
- इवन ऐरे का आवश्यक योग reqSum = sum2 - sum1 + minEven होगा, इस reqSum से even[] ऐरे के योग को घटाने पर हमें मिसिंग इवन नंबर मिल जाएगा
- इसी तरह, मिसिंग ऑड नंबर भी ढूंढा जा सकता है क्योंकि हम जानते हैं कि पहले N ऑड नंबरों का योग N² है
उदाहरण
#includeusing namespace std; void findMissingNums(int even[], int sizeEven, int odd[], int sizeOdd) { int minEven = INT_MAX; int maxEven = INT_MIN; int minOdd = INT_MAX; int maxOdd = INT_MIN; int sumEvenArr = 0, sumOddArr = 0; for (int i = 0; i < sizeEven; i++) { minEven = min(minEven, even[i]); maxEven = max(maxEven, even[i]); sumEvenArr += even[i]; } for (int i = 0; i < sizeOdd; i++) { minOdd = min(minOdd, odd[i]); maxOdd = max(maxOdd, odd[i]); sumOddArr += odd[i]; } int totalTerms = 0, reqSum = 0; totalTerms = minEven / 2; int evenSumMin = totalTerms * (totalTerms + 1); totalTerms = maxEven / 2; int evenSumMax = totalTerms * (totalTerms + 1); reqSum = evenSumMax - evenSumMin + minEven; cout << "Missing even number = " << reqSum - sumEvenArr << "\n"; totalTerms = (minOdd / 2) + 1; int oddSumMin = totalTerms * totalTerms; totalTerms = (maxOdd / 2) + 1; int oddSumMax = totalTerms * totalTerms; reqSum = oddSumMax - oddSumMin + minOdd; cout << "Missing odd number = " << reqSum - sumOddArr << "\n"; } int main() { int even[] = {10, 8, 6, 16, 12}; int sizeEven = sizeof(even) / sizeof(even[0]); int odd[] = {3, 9, 13, 7, 11}; int sizeOdd = sizeof(odd) / sizeof(odd[0]); findMissingNums(even, sizeEven, odd, sizeOdd); return 0; }
जब आप उपरोक्त प्रोग्राम को कंपाइल और 실행 करते हैं। यह निम्नलिखित आउटपुट उत्पन्न करता है -
आउटपुट
Missing even number = 14 Missing odd number = 5