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

C++-এ কো-প্রাইম অ্যারে बनाने জন্য ন্যূনতম ইনসারশন

এই সেকশনে আমরা আরেকটি আকর্ষণীয় সমস্যা দেখব। মনে করুন у нас N এলিমেন্টের একটি অ্যারে আছে। আমাদের এই অ্যারেকে কো-প্রাইম অ্যারে বানাতে হলে ন্যূনতম কতগুলো ইন্টারসেকশন পয়েন্ট ইনসার্ট করতে হবে তা বের করতে হবে। কো-প্রাইম অ্যারেতে প্রতিটি দুটি লগাতার এলিমেন্টের GCD ১ হবে। আমাদের অ্যারেটিও প্রিন্ট করতে হবে।

মনে করুন у нас এলিমেন্ট গুলো আছে {5, 10, 20}। এটি কো-প্রাইম অ্যারে নয়। এখন ৫, ১০ এবং ১০, ২০ এর মাঝপথে ১ ইনসার্ট করলে এটি কো-প্রাইম অ্যারে হয়ে যাবে। তাহলে অ্যারেটি হবে {5, 1, 10, 1, 20}

অ্যালগরিদম

makeCoPrime(arr, n): 
শুরু 
    count := 0
    i = 1 থেকে n পর্যন্ত, করো
        যদি arr[i] এবং arr[i-1]-এর GCD ১ না হয়, তবে count ১ বাড়াও
    শেষ
    count মান ডিসপ্লে করো
    arr-এর প্রথম এলিমেন্ট ডিসপ্লে করো
    i = 1 থেকে n পর্যন্ত, করো
        যদি arr[i] এবং arr[i-1]-এর GCD ১ না হয়, তবে ১ ডিসপ্লে করো
        এলিমেন্ট arr[i] ডিসপ্লে করো
    শেষ
শেষ

উদাহরণ (C++ কোড)

#include <iostream>
#include <algorithm>
using namespace std;

int makeCoPrime(int arr[], int n) {
    int count = 0;
    for(int i = 1; i < n; i++) {
        if(__gcd(arr[i], arr[i - 1]) != 1) {
            count++;
        }
    }
    cout << "Number of intersection points: " << count << endl;
    cout << arr[0] << " ";
    for(int i = 1; i < n; i++) {
        if(__gcd(arr[i], arr[i - 1]) != 1) {
            cout << 1 << " ";
        }
        cout << arr[i] << " ";
    }
}

int main() {
    int A[] = {2, 7, 28};
    int n = sizeof(A)/sizeof(A[0]);
    makeCoPrime(A, n);
}

আউটপুট

Number of intersection points: 1 2 7 1 28
  1. C++-এ অ্যারে-এর XOR শূন্য করার জন্য মিনিমাম অপারেশন

  2. C++-এ দুটি স্ট্রিংকে অভিন্ন করার ন্যূনতম খরচ বের করা

  3. C++-এ অ্যারের GCD কে k-এর গুণিতক বানানোর ন্যূনতম অপারেশন

  4. C++-এ অ্যারের সব এলিমেন্ট একই করার জন্য ন্যূনতম ডিলিট অপারেশন