কম্পিউটার টিউটোরিয়াল

C++-এ আর্থিক প্রগতিতে (Arithmetic Progression) অনুপস্থিত সংখ্যা


মান लीজিয়ে একটি অ্যারে আছে যা আর্থিক প্রগতির (arithmetic progression) উপাদানগুলো ক্রম অনুযায়ী উপস্থাপন করে। একটি উপাদান অনুপস্থিত। আমাদের কাজ হলো অনুপস্থিত উপাদানটি বের করা। তাই যদি arr = [2, 4, 8, 10, 12, 14] হয়, তবে আউটপুট হবে 6, কারণ 6 অনুপস্থিত।

বাইনারি সার্চ ব্যবহার করে এই সমস্যা সমাধান করা যায়। আমরা মিডেল এলিমেন্টে যাব, তারপর যাচাই করব মিডেল এবং এর পরবর্তী উপাদানের পার্থক্য diff-এর সমান কিনা। যদি না হয়, তবে অনুপস্থিত উপাদান mid এবং mid + 1 ইনডেক্সের মধ্যে রয়েছে। যদি মিডেল উপাদান AP-র n/2তম উপাদান হয়, তবে অনুপস্থিত উপাদান ডান পাশে থাকবে, অন্যথায় বাম পাশে।

উদাহরণ (C++)

#include <iostream> using namespace std; #define INT_MAX 999999 class Progression {    public:    int missingUtil(int arr[], int left, int right, int diff) {       if (right <= left)          return INT_MAX;       int mid = left + (right - left) / 2;       if (arr[mid + 1] - arr[mid] != diff)          return (arr[mid] + diff);       if (mid > 0 && arr[mid] - arr[mid - 1] != diff)          return (arr[mid - 1] + diff);       if (arr[mid] == arr[0] + mid * diff)          return missingUtil(arr, mid + 1, right, diff);       return missingUtil(arr, left, mid - 1, diff);    }    int missingElement(int arr[], int n) {       int diff = (arr[n - 1] - arr[0]) / n;       return missingUtil(arr, 0, n - 1, diff);    } }; int main() {    Progression pg;    int arr[] = {2, 4, 8, 10, 12, 14};    int n = sizeof(arr) / sizeof(arr[0]);    cout << "The missing element is: " << pg.missingElement(arr, n)<<endl; }

ইনপুট

[2,4,8,10,12,14]

আউটপুট

The missing element is: 6

  1. C++ ব্যবহার করে N কে প্যালিনড্রোম সংখ্যাগুলোর যোগফল হিসেবে প্রকাশের ন্যূনতম প্যালিনড্রোম সংখ্যা

  2. C++ ব্যবহার করে অ্যারেতে একটি সংখ্যার ফ্রিকোয়েন্সি বের করা

  3. C++-এ অ্যারিথমেটিক নম্বর

  4. C++-এ CHAR_BIT