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

C++-এ প্রথম N সংখ্যা K দূরত্বে রি-অ্যারেঞ্জ করুন


দুটি পূর্ণসংখ্যা N ও K দেওয়া থাকলে, ১ থেকে N পর্যন্ত পারমিউটেশন বানিয়ে সেটিকে এমনভাবে রি-অ্যারেঞ্জ করতে হবে যাতে প্রতিটি এলিমেন্ট তার আসল পজিশন থেকে K দূরত্বে থাকে।

উদাহরণ

ইনপুট − n = 20, k = 2

আউটপুট − 3 4 1 2 7 8 5 6 11 12 9 10 15 16 13 14 19 20 17 18

ইনপুট − n = 10, k = 3

আউটপুট − Not Possible

প্রোগ্রামে ব্যবহৃত পদ্ধতি

  • ইনপুট N, K নিন।

  • Rearrangement(int n, int k) ফাংশন কল করুন।

  • temp = n % (2*k)। যদি temp != 0 হয়, "Not Possible"।

  • ptr[n+1] অ্যারেতে ১ থেকে N রাখুন।

  • for i=1 to n step 2*k → for j=1 to k → swap(ptr[i+j-1], ptr[k+i+j-1])।

  • ptr প্রিন্ট করুন।

উদাহরণ কোড

#include <bits/stdc++.h>
using namespace std;

void Rearrangement(int n, int k){
    int temp = n % (2 * k);
    int ptr[n + 1];
    if(k == 0){
        for(int i = 1; i <= n; i++) cout << i << " ";
        return;
    }
    if(temp != 0){
        cout << "Not Possible";
        return;
    }
    for(int i = 1; i <= n; i++) ptr[i] = i;
    for(int i = 1; i <= n; i += 2 * k){
        for(int j = 1; j <= k; j++){
            swap(ptr[i + j - 1], ptr[k + i + j - 1]);
        }
    }
    for(int i = 1; i <= n; i++) cout << ptr[i] << " ";
}

int main(){
    int n = 20, k = 2;
    cout << "Rearrangement of first N numbers to make them at K distance is: ";
    Rearrangement(n, k);
    return 0;
}

আউটপুট

উপরের কোড রান করলে নিচের আউটপুট পাওয়া যাবে:

Rearrangement of first N numbers to make them at K distance is: 3 4 1 2 7 8 5 6 11 12 9 10 15 16 13 14 19 20 17 18
  1. C++-এ ট্রাইবোন্যাচি নাম্বার জেনারেট করা

  2. C++-এ টেট্রান্যাচি নাম্বার জেনারেট করা

  3. C++ প্রোগ্রাম: প্রথম n প্রাকৃতিক সংখ্যার কিউব সমষ্টি

  4. C++-এ প্রথম n প্রাকৃতিক সংখ্যার বর্গের যোগফল (Sum of Squares)