সমস্যা বিবৃতি
জোড় [] এবং বিজোড় [] দুটি পূর্ণসংখ্যার অ্যারে দেওয়া হয়েছে যাতে যথাক্রমে পরপর জোড় এবং বিজোড় উপাদান থাকে এবং প্রতিটি অ্যারে থেকে একটি উপাদান অনুপস্থিত থাকে। কাজটি হল অনুপস্থিত উপাদানগুলি খুঁজে বের করা।
উদাহরণ
If even[] = {10, 8, 6, 16, 12} and odd[] = {3, 9, 13, 7, 11} then missing number from even array is 14 and from odd array is 5.
অ্যালগরিদম
- ভেরিয়েবল minEven এবং maxEven এ ইভেন[] অ্যারে থেকে ন্যূনতম এবং সর্বোচ্চ জোড় উপাদানগুলি সংরক্ষণ করুন
- প্রথম N জোড় সংখ্যার যোগফল হল N * (N + 1)। 2 থেকে মিন পর্যন্ত জোড় সংখ্যার যোগফল গণনা করুন এমনকি যোগফল 1 বলুন এবং 2 থেকে সর্বোচ্চ এমনকি জোড় সংখ্যার যোগফল 2 বলুন
- জোর অ্যারের প্রয়োজনীয় যোগফল হবে reqSum =sum2 – sum1 + minEven, এই reqSum থেকে জোড়[] অ্যারের যোগফল বিয়োগ করলে আমাদের অনুপস্থিত জোড় সংখ্যা পাওয়া যাবে
- একইভাবে, অনুপস্থিত বিজোড় সংখ্যাটিও পাওয়া যেতে পারে কারণ আমরা জানি যে প্রথম N বিজোড় সংখ্যার যোগফল হল N2
উদাহরণ
#include <bits/stdc++.h> using 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